按引用和指针传递

这个问题在这里已经有了答案:

  • 传递引用与价值传递之间有什么区别? 18个答案

  • 在C中没有通过引用的传递,它总是按值传递。

    C开发人员可以通过引用来模拟传递,方法是将指针传递给变量,并使用函数中的取消引用对其进行访问。 如下所示,它将变量设置为42

    static void changeTo42 (int *pXyzzy) {
        *pXyzzy = 42;
    }
    :
    int x = 0;
    changeTo42 (&x);
    

    与C ++真正的通过引用相比,你不必沉迷于指针(特别是指向指针的指针,即使经验丰富的编码器可能偶尔也会诅咒和咬牙切齿):

    static void changeTo42 (int &xyzzy) {
        xyzzy = 42;
    }
    :
    int x = 0;
    changeTo42 (x);
    

    我会恳求ISO考虑在下一个C标准中增加真实的参考。 不一定是C ++中的全部功能,只是能够解决人们在调用函数时遇到的所有问题。


    你可能会想到C ++。 我会在下面介绍。

    在C中没有参考的路经。 为了完成同样的功能,你可以发送一个指向变量的指针作为参数,并在方法中取消引用指针,如paxdiablo的注释中所示。

    在C ++中,如果您尝试通过引用C样式传递(如前所述),或者尝试传递参数,则可以完成相同的事情:

    static void multiply(int& x){
        x * 7;
    }
    
    void main(){
        int x = 4;
        multiply(x);
    }
    

    该程序结束时的变量x等于28。

    链接地址: http://www.djcxy.com/p/20605.html

    上一篇: Pass by reference and pointers

    下一篇: pass by reference and pass by value in c++ and java