Je suis en train de une NSString constante dans mon .h fichier à définir, dans mon .m. Je comprends queextern NSString * const variableName;
dans la .h etNSString * const variableName = @"variableValue";
est la façon de le faire. L'examen de c tutoriels je vois qu' const
est censé aller de l'avant définitions de variables. Ma question est: pourquoi n'est-il pas déclaré en tant que extern const NSString * variableName;
dans la .h et const NSString * variableName = @"variableValue";
dans la .m. Je sais que cela ne fonctionne pas car je rencontre des avertissements du compilateur qui disent "Passing argument 1 de methodName: les rejets qualificatifs de pointeur de type de cible'. Qu'est-ce que cela signifie?
Réponses
Trop de publicités?Ce n'est pas la même chose. Le modificateur const peut être appliqué à la valeur ou le pointeur sur la valeur.
int * const
Un pointeur constant (non modifiable) sur un entier (sa valeur peut être modifiée)
const int *
Un pointeur modifiable sur un entier constant (sa valeur ne peut pas être modifiée)
Donc, vous pouvez imaginer:
const int * const;
Pointeur Constant n'est PAS de pointeur constant. Pointeur Constant signifie que le pointeur est constante. Pour exemple: Pointeur Constant int * const ptr2 indique que ptr2 est un pointeur constant. Cela signifie que ptr2 ne peut pas être fait à point à un autre nombre entier. Cependant l'entier pointé par ptr2 peut être changé.
Où comme un Pointeur constant est const int * ptr1 indique que ptr1 est un pointeur qui pointe vers une constante de type entier. L'entier est constante et ne peut pas être changé. Toutefois, le pointeur de ptr1 peut être fait à point à un autre nombre entier.