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

时间:2012-04-15 19:49:25

标签: objective-c c

以下两对法规之间有什么区别?

   int i;
   doSomethingWith(i);

   int i;
   doSomethingWith(&i);

3 个答案:

答案 0 :(得分:4)

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

该功能如下所示:

void doSomethingWith (int *var);

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

*var = 5;

这是解除引用操作符,它为您提供实际存储在该地址的内容。此调用将为您传递的内存位置& i。

分配5

任何C教科书在谈到指针时都应该详细解释这一点。

答案 1 :(得分:2)

在第一个你传递i的值。在第二个中,你传递变量i的地址。

查看有关指针及其类似内容的this视频。

答案 2 :(得分:0)

  • 传递'i' - >传递i的值(内存位置内的值)
  • 传递'& i' - >将引用传递给'i'
  • 的内存位置