Pass by reference and pointers

This question already has an answer here:

  • What's the difference between passing by reference vs. passing by value? 18 answers

  • There is no pass by reference in C, it's always pass by value.

    C developers can emulate pass by reference, by passing the pointers to a variable and the accessing it using dereferencing within the function. Something like the following, which sets a variable to 42 :

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

    Contrast that with the C++ true pass by reference, where you don't have to muck about with pointers (and especially pointers to pointers, where even seasoned coders may still occasionally curse and gnash their teeth):

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

    I would implore ISO to consider adding true references to the next C standard. Not necessarily the full capability found in C++, just something that would fix all the problems people have when calling functions.


    You might be thinking of C++. I'll cover that below.

    In C there is no passing by reference. To accomplish the same feat, you can send a pointer to a variable as an argument and dereference the pointer in the method, as shown in paxdiablo's comment.

    In C++, you could accomplish the same thing if you tried to pass by reference C-style (as explained previously) or if you tried passing the arguments as such:

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

    The variable x at the end of this program would equal 28.

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

    上一篇: 使用set函数的C ++更新对象属性

    下一篇: 按引用和指针传递