0

そこで、Xcode を使用していくつかの小さな Objective-C アプリを作成しています。コード行は次のとおりです。

  int * foo;
    foo = 5;
    NSLog(@"does it work... %i", foo);

今ではコンパイルして正常に実行されますが、「ポインタの割り当てに互換性のない整数...」という警告が表示されるのはなぜですか? 上記のコードは、ポインター自体を5に設定するのではなく、fooが指しているすべてのものを5に設定するように指示していると思いました。

4

1 に答える 1

4

このコードは偶然に機能します。intポインターには整数値を保持するのに十分なスペースがありNSLog、ポインターを整数として再解釈しますが、プログラムはまだ正しくありません。

へのポインターにintは、次のように整数変数のアドレスを割り当てる必要があります。

int *foo;
int var;
foo = &var;

これで、ポインターを介して変数を割り当てることができます。

*foo = 5;

ポインターまたは変数を介して値を読み取ることもできます。

NSLog(@"%d %d", *foo, var);
于 2012-07-21T03:58:38.987 に答える