14

の位置付けの意義は何ですか

const

Objective-C で変数を宣言するときのキーワード。例:

extern const NSString * MY_CONSTANT;

extern NSString * const MY_CONSTANT;

代入で最初のバージョンを使用すると、「ポインタ ターゲット タイプの修飾子」が破棄されるという警告が生成されるため、2 番目のバージョンではポインタ アドレスが同じままであることが保証されると想定しています。私は本当により決定的な答えをいただければ幸いです。よろしくお願いします!

4

3 に答える 3

14

最初のケースでは、不変オブジェクトへの可変ポインターを宣言していますが、2 番目のケースでは、可変オブジェクトconst NSStringへの不変ポインターを宣言しています。NSString

これを覚える簡単な方法は、 がどこにあるかを確認すること*です。その左側のすべてが「pointee」タイプであり、その右側のすべてがポインターのプロパティを記述します。

于 2010-01-17T21:53:13.283 に答える
8
extern const NSString * MY_CONSTANT; 

- ポインタは変数ですが、ポインタが指すデータは定数です。

 extern NSString * const MY_CONSTANT; 

- ポインターは定数ですが、ポインターが指すデータは定数ではありません。

于 2010-10-22T17:45:15.763 に答える
5

一般に、const常に . の直前のトークンに適用されますconst。2 番目のケースでは、constは、ポインターが指し示すものではなく、定数であることを意味します。例外はconst、最初の例のように、意味のある定数になる可能性のあるものの前に表示される場合です。この場合、最初のタイプ、この場合は に適用されるためNSStringextern NSString const * MY_CONSTANT

于 2010-01-17T21:59:03.770 に答える