c - 变量的含义(传递给函数)

标签 c embedded

int main()
{
    int a = 3;
    func(&a)
}

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

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

(另外,实际代码中的变量 a 可能是全局变量或外部变量或其他变量,我不确定:-/)。

最佳答案

func being some arbitrary user defined function

它不能是“任意的” - 它必须采用指向 intvoid* 的指针才能使调用合法。

这个&符号是“获取地址”运算符。它向 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/

相关文章:

c - 尝试使用 iw_statistics 结构但遇到问题?

c++ - Windows 上的默认 64 位地址数据类型

c - 如何将struct作为数组传输?

c - 通过 Uart ISR 更新变量而不中断分配

c - 检查溢出的最快方法?

c - 最大化 SDL 窗口

c - 如何从shell脚本调用c函数?

c++ - G++ 不使用 -O0 编译我的源代码,但它使用 -O2 -DNDEBUG,我该如何解决?

gcc - 使用标准 GCC 编译 ARM Cortex M3?

c - 如何编写设备的头文件