&符号在函数调用中是什么意思?
What does ampersand mean in function call?
我是 C 语言编程的新手,我正在查看一些代码。我想知道以下是什么意思:
adjust(&total, adjustmentFactor);
我知道 total
和 adjustmentFactor
都是双精度数,但是由于这个函数确实将输出分配给一个变量,我假设这个函数改变了 total 指向什么?如果那是它的作用,如果你要实施调整,你会如何改变它?
您可以通过两种方式将参数传递给函数:
按值
总计;
调整(总计);
在这种情况下,将创建传递值的本地副本。如果您以某种不会影响父函数的 'total' 值的方式更改它。
参考
总计;
调整(&总计);
在这种情况下,将传递 'total' 变量的地址,现在如果您以任何方式在 adjust() 中更改 total ,将使用父函数中的 total 变量执行更改。
我推荐你阅读:
Reference and dereference
是的,你是对的:& 符号获取左值(变量)的地址并将其作为指针传递。
您的 adjust()
函数如下所示:
void adjust(double *a, double f) {
... do a lot of stuff
*a = *a * f/2+1.0; // dummy formula that will change the content
...
};
所以在函数中,每次你想使用第一个参数指向的值时,你都会使用 *a
,每次你想为原始变量分配一个新值。
我是 C 语言编程的新手,我正在查看一些代码。我想知道以下是什么意思:
adjust(&total, adjustmentFactor);
我知道 total
和 adjustmentFactor
都是双精度数,但是由于这个函数确实将输出分配给一个变量,我假设这个函数改变了 total 指向什么?如果那是它的作用,如果你要实施调整,你会如何改变它?
您可以通过两种方式将参数传递给函数:
按值
总计;
调整(总计);
在这种情况下,将创建传递值的本地副本。如果您以某种不会影响父函数的 'total' 值的方式更改它。
参考
总计;
调整(&总计);
在这种情况下,将传递 'total' 变量的地址,现在如果您以任何方式在 adjust() 中更改 total ,将使用父函数中的 total 变量执行更改。
我推荐你阅读:
Reference and dereference
是的,你是对的:& 符号获取左值(变量)的地址并将其作为指针传递。
您的 adjust()
函数如下所示:
void adjust(double *a, double f) {
... do a lot of stuff
*a = *a * f/2+1.0; // dummy formula that will change the content
...
};
所以在函数中,每次你想使用第一个参数指向的值时,你都会使用 *a
,每次你想为原始变量分配一个新值。