int main()
{
int a = 3;
func(&a)
}
(func是一些任意用户定义的函数)
这个&amp ;?的含义是什么?我知道它是引用变量,但到目前为止我只看到它被用在函数定义中。
(另外,实际代码中的变量a可能是全局的或外部的或者其他东西,我不确定: - /)。
答案 0 :(得分:4)
func
是一些任意用户定义的函数
它不能是“任意的” - 它必须指向int
或void*
,以使呼叫合法。
此&符号是“接收地址”运算符。它将func
的地址传递给a
,以便func
可以修改它:
void func(int *pa) {
*pa = 4; // Note the asterisk - it "undoes" the effect of the ampersand
}
如果您在main
致电后a
打印func
,则会打印4
而不是3
。
请注意,如果您将a
而非指向a
的指针传递给采用int
而非int*
的函数,则会对int
进行修改1}}函数内部对你传递的参数没有影响,因为在C中参数是按值传递的。
实际代码中的变量a可能是全局或外部或某种
它可能不是全球性的,因为传递全局变量没有意义:由于它是全球性的,它们已经可以从任何地方访问。
答案 1 :(得分:2)
&
表示您将该变量的地址传递给该函数。
当函数接受指针参数并且您只有一个原子变量时,这是必需的。
答案 2 :(得分:1)
&
将变量的地址(&
之后)传递给函数。
由于在C中没有引用调用,如果您有兴趣在调用者中反映变量的变化,则需要将变量的地址传递给函数。
答案 3 :(得分:1)
表达式&<variable>
生成<variable>
的地址。
在您的示例中,允许func()
通过解除引用(例如main()
)直接修改a
的本地变量*a = b
的值。
在您的示例中,结果可以更简单,更安全地从函数中返回:例如a = func()
,但该技术通常对以下内容有用:
const
限定的。)