Objective c 通过i和&;我需要一个函数
以下几对支架之间有什么区别Objective c 通过i和&;我需要一个函数,objective-c,c,Objective C,C,以下几对支架之间有什么区别 int i; doSomethingWith(i); 及 首先,你要传递i的值。在第二秒钟,您将在内存中传递变量i的地址 看一看关于指针之类的视频。首先,你要传递i的值。在第二秒钟,您将在内存中传递变量i的地址 看一看指针之类的视频。在C语言中,&是操作符的地址。因此,不是像第一次调用那样传递i的副本,而是传递i或&i的地址,这意味着函数可以直接修改它 该函数将如下所示: void doSomethingWith (int *var); 这意味着它接受
int i;
doSomethingWith(i);
及
首先,你要传递i的值。在第二秒钟,您将在内存中传递变量i的地址
看一看关于指针之类的视频。首先,你要传递i的值。在第二秒钟,您将在内存中传递变量i的地址
看一看指针之类的视频。在C语言中,&是操作符的地址。因此,不是像第一次调用那样传递
i
的副本,而是传递i
或&i
的地址,这意味着函数可以直接修改它
该函数将如下所示:
void doSomethingWith (int *var);
这意味着它接受一个指向整数的指针(保存地址的东西)(在本例中为i
)。然后,要直接修改i
,函数可以执行以下操作:
*var = 5;
这是解引用运算符,它提供了实际存储在该地址的内容。此调用将为存储在与&i一起传递的内存位置的内容分配5
任何一本C语言教科书在谈到指针时都应该详细解释这一点。在C语言中,&是运算符的地址。因此,不是像第一次调用那样传递
i
的副本,而是传递i
或&i
的地址,这意味着函数可以直接修改它
该函数将如下所示:
void doSomethingWith (int *var);
这意味着它接受一个指向整数的指针(保存地址的东西)(在本例中为i
)。然后,要直接修改i
,函数可以执行以下操作:
*var = 5;
这是解引用运算符,它提供了实际存储在该地址的内容。此调用将为存储在与&i一起传递的内存位置的内容分配5
任何C语言教科书在谈到指针时都应该详细解释这一点。- 传递“i”-->传递i的值(内存位置内的值)
- 传递'&i'-->传递对'i'内存位置的引用
- 传递“i”-->传递i的值(内存位置内的值)
- 传递'&i'-->传递对'i'内存位置的引用
var
,您会看到类似0x22ff44的内容:它所持有的地址*var=5
在0x22ff44中存储一个5(或无论i的地址是什么),因此i
将等于5。整数i
和指针var
仍将使用内存(用于函数的生命周期)。感谢您抽出时间。这就是我所想的。所以通过使用去引用操作符,你得到了内存位置的值,从而节省了一点内存(整数占用的字节数)?去引用操作符提取了存储在你给它的内存位置的内容。指针包含一个内存位置。如果要输出var
,您会看到类似0x22ff44的内容:它所持有的地址*var=5
在0x22ff44中存储一个5(或i的地址是什么),因此i
将等于5。整数i
和指针var
仍将使用内存(用于函数的生命周期)。