指向int转换编译器的麻烦?

时间:2012-07-21 03:56:23

标签: objective-c pointers type-conversion declaration

所以我正在使用Xcode编写一些小的Objective-C应用程序,我有一行代码:

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

现在它编译并运行得很好,但我想知道,为什么它会给我警告,“指针分配不兼容整数......”?我认为上面的代码告诉它设置foo指向5的任何内容,而不是将指针本身设置为5.任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:4)

这段代码是偶然的:int指针碰巧有足够的空间来容纳整数值,而NSLog将指针重新解释为整数,但程序仍然不正确。 / p>

应该为int指针指定一个整数变量的地址,如下所示:

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

现在您可以通过指针分配变量:

*foo = 5;

您还可以通过指针或变量读取值:

NSLog(@"%d %d", *foo, var);