【问题标题】:Calling function within function using pointers - C使用指针在函数内调用函数 - C
【发布时间】:2016-11-12 00:30:15
【问题描述】:

我有一个函数接受两个指针参数。可以说这是

void add(u16 *x, u16 *y)

我还有另一个接受三个指针参数的函数。

void fact(u16 *a, u16 *b, u16 *c){
    if(*c > 500){
        add(*a,*b); // Is this correct?
    }
} 

如果满足事实中的某个标准,我想将参数 a 和 b 传递给函数 add,但我想通过引用而不是值传递它们。我该怎么做?在调用函数时,a、b、c、x 和 y 都使用“&x”从“main”向下传递。

所以我希望通过引用传递所有内容,以便任何值修改都将返回到 main。

非常感谢!

【问题讨论】:

    标签: c function pointers memory-address


    【解决方案1】:

    添加(*a,*b); // 这是正确的吗?

    不,这不正确。

    假设原型是void add(u16 *x, u16 *y),那么调用函数应该调用类型匹配的参数。在fact()ab 中已经是指针,所以正确的代码应该是这样的:

    void fact(u16 *a, u16 *b, u16 *c){
        if(*c > 500){
            add(a,b); // this is correct
        }
    }
    

    【讨论】:

      【解决方案2】:

      不,这是不正确的。我个人觉得如果在类型而不是变量名旁边写* 会更容易理解。

      你的函数add有两个参数,都是指向u16的指针,即u16*。在您的fact 中,您有三个变量,它们都是u16*。类型已经匹配,因此您需要将其称为:

      add(a, b);
      

      然后您通过值传递 指针,这相当于通过引用传递实际整数值。您可以在需要时将指针传递给指针,但它不如按值传递指针常见。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-16
        • 1970-01-01
        • 1970-01-01
        • 2017-11-24
        • 2015-08-31
        • 1970-01-01
        相关资源
        最近更新 更多