&variable 的含义(传递给函数)

Mau*_*vai 0 c embedded

int main()
{
    int a = 3;
    func(&a)
}
Run Code Online (Sandbox Code Playgroud)

(func 是一些任意的用户定义函数)

这是什么意思 &?我知道它是参考变量,但到目前为止我只看到它在函数定义中使用。

(此外,实际代码中的变量 a 可能是 global 或 extern 之类的,我不确定 :-/ )。

das*_*ght 5

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 之类的

它可能不是全局的,因为传递全局变量没有意义:由于是全局的,它们已经可以从任何地方访问。

  • 所以我理解在c中传递一个我想在函数中修改的变量我使用`&variable`,并且函数输入需要一个指针在c++中相当于我将一个函数声明为`func(int& name) ` 并简单地在 main 中将 `a` 传递给它,而不是 `&a` (2认同)