参数传递C - 指针,地址,别名

Fra*_*ano -4 c parameters pointers function parameter-passing

有人可以解释一下C参数传递的区别吗?根据教授的说法,有4种不同的传递参数的方法

  1. 呼叫按值
  2. 按地址调用(指针)
  3. 调用 - 别名
  4. 全局变量/静态变量

如果你能举一个例子,我将非常感谢,你的工作将受到赞扬.

Geo*_*rge 5

  1. 呼叫按值

    将值作为参数传递给函数.如果函数修改变量,则实际变量不会更改.

    void fun1(int myParam)
    {
        myParam = 4;
    }
    
    void main()
    {
        int myValue = 2;
        fun1(myValue);
        printf("myValue = %d",myValue);
    }
    
    Run Code Online (Sandbox Code Playgroud)

    myValue 永远是2.

  2. 按地址调用(指针)

    void fun1(int *myParam)
    {
        *myParam = 4;
    }
    void main()
    {
        int myValue = 2;
        fun1(&myValue);
        printf("myValue = %d",myValue);
    }
    
    Run Code Online (Sandbox Code Playgroud)

    在这里,我们将地址传递myValuefun1.因此,最终的价值myValue将是4 main().

  3. 调用 - 别名

    根据我的理解,C中没有别名.它应该是C++引用机制.

  4. 全局变量/静态变量

    全局变量和静态变量是存储在公共位置的变量,可由调用者和被调用者函数访问.因此,调用者和被调用者都可以访问和修改它们.

    int myValue = 2;
    void fun1()
    {
        myValue = 4;
    }
    void main()
    {
        myValue = 2
        fun1();
        printf("myValue = %d",myValue);
    }
    
    Run Code Online (Sandbox Code Playgroud)

    你可以猜到,最后的值myValue将是4 main().

希望能帮助到你.