objective-c - 将 i 和 &i 传递给函数之间的区别

标签 objective-c c

下面两对语句有什么区别?

   int i;
   doSomethingWith(i);

   int i;
   doSomethingWith(&i);

最佳答案

在 C 中,& 是寻址运算符。因此,不像在第一次调用时那样传递 i 的副本,而是传递 i 的地址,或 &i,这意味着函数可以直接修改。

函数看起来像这样:

void doSomethingWith (int *var);

这意味着它需要一个指向整数(在本例中为 i)的指针(保存地址的东西)。然后,直接修改i,函数可以做:

*var = 5;

这是取消引用运算符,它为您提供实际存储在该地址的内容。此调用会将 5 分配给存储在您使用 &i 传递的内存位置的内容。

任何 C 教科书在谈到指针时都应该对此进行非常详细的解释。

关于objective-c - 将 i 和 &i 传递给函数之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10165456/

相关文章:

objective-c - 如何基于 nib 文件创建 UINavigationItem.TitleView?

c - fgets() 不保存 c 中的第一行

c - 从字符串数组中搜索字符串

c - 为字符串动态分配内存

c - 使用 c 的文本编辑器

objective-c - objective-c 中的 "to the power of"符号是什么

iphone - NSDateComponents 给出奇怪的结果

ios - 如何根据内容水平扩展 UITextField?

objective-c - 将元胞自动机状态简化为一组向量路径

C内存扫描器【无限循环】