Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在函数调用中,符号AND是什么意思?_C_Parameter Passing_Ampersand - Fatal编程技术网

C 在函数调用中,符号AND是什么意思?

C 在函数调用中,符号AND是什么意思?,c,parameter-passing,ampersand,C,Parameter Passing,Ampersand,我是C语言编程新手,我在看一些代码。我想知道以下是什么意思: adjust(&total, adjustmentFactor); 我知道total和adjustmentFactor都是双倍的,但是由于该函数确实将输出分配给变量,我假设该函数将total points更改为什么?如果它就是这样做的,那么如果要实现adjust,您将如何更改它?您可以通过两种方式将参数传递给函数: 按价值 整数合计 调整(总数) 在这种情况下,将创建传递值的本地副本。如果以不影响父函数“total”值的方式

我是C语言编程新手,我在看一些代码。我想知道以下是什么意思:

adjust(&total, adjustmentFactor);

我知道
total
adjustmentFactor
都是双倍的,但是由于该函数确实将输出分配给变量,我假设该函数将total points更改为什么?如果它就是这样做的,那么如果要实现adjust,您将如何更改它?

您可以通过两种方式将参数传递给函数:

  • 按价值

    整数合计

    调整(总数)

    在这种情况下,将创建传递值的本地副本。如果以不影响父函数“total”值的方式对其进行更改

  • 参照

    整数合计

    调整(&总计)

  • 在这种情况下,将传递“total”变量的地址,现在如果您以任何方式更改adjust()中的total,则将使用父函数中的total变量执行更改

    我建议你阅读:


    是的,你是对的:与符号取左值(变量)的地址,并将其作为指针传递

    您的
    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是通过值传递的,但是这个值可能是一个要传递到指针的地址,而不是像C++这样的语言,它实际上有一个特定的通过引用的概念。