int main()
{
int a = 3;
func(&a)
}
(func 是任意用户定义的函数)
这个&是什么意思?我知道它是引用变量,但到目前为止我只看到它在函数定义中使用。
(另外,实际代码中的变量 a 可能是全局变量或外部变量或其他变量,我不确定:-/)。
最佳答案
func
being some arbitrary user defined function
它不能是“任意的” - 它必须采用指向 int
或 void*
的指针才能使调用合法。
这个&符号是“获取地址”运算符。它向 func
传递 a
的地址,以便 func
可以修改它:
void func(int *pa) {
*pa = 4; // Note the asterisk - it "undoes" the effect of the ampersand
}
如果您的 main
在调用 func
之后打印 a
,它会打印 4
而不是 3
.
请注意,如果您将 a
而不是指向 a
的指针传递给采用 int
而不是 int 的函数*
,那么对函数内的 int
所做的修改将不会对您传递的参数产生影响,因为在 C 中参数是按值传递的。
the variable a in the actual code is probably global or extern or something
它可能不是全局的,因为传递全局变量是没有意义的:由于是全局的,它们已经可以从任何地方访问。
关于c - 变量的含义(传递给函数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23824765/