int main()
{
int a = 3;
func(&a)
}
Run Code Online (Sandbox Code Playgroud)
(func 是一些任意的用户定义函数)
这是什么意思 &?我知道它是参考变量,但到目前为止我只看到它在函数定义中使用。
(此外,实际代码中的变量 a 可能是 global 或 extern 之类的,我不确定 :-/ )。
func是一些任意的用户定义函数
它不能是“任意的”——它必须有一个指向int或 a的指针void*,以便调用合法。
这个与号是“取地址”操作符。它通过func地址a,这样func可以,例如,修改:
void func(int *pa) {
*pa = 4; // Note the asterisk - it "undoes" the effect of the ampersand
}
Run Code Online (Sandbox Code Playgroud)
如果你的main打印a,来电后func,它打印4代替3。
请注意,如果你传递a,而不是一个指针来a给具有的功能int,而不是一个int*,然后修改完成该int函数内会对您传递参数没有影响,因为在C参数是按值传递。
实际代码中的变量 a 可能是 global 或 extern 之类的
它可能不是全局的,因为传递全局变量没有意义:由于是全局的,它们已经可以从任何地方访问。