gpt4 book ai didi

c - C 中的参数传递 - 指针、地址、别名

转载 作者:行者123 更新时间:2023-11-30 21:14:25 25 4
gpt4 key购买 nike

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

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

如果您能举个例子,我将不胜感激,并且您的工作将受到赞扬。

最佳答案

  1. 按值调用

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

    void fun1(int myParam)
    {
    myParam = 4;
    }

    void main()
    {
    int myValue = 2;
    fun1(myValue);
    printf("myValue = %d",myValue);
    }

    myValue 始终为 2。

  2. 按地址调用(指针)

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

    这里我们将myValue的地址传递给fun1。因此,在 main() 末尾,myValue 的值将为 4。

  3. 通过别名调用

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

  4. 全局变量/静态变量

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

    int myValue = 2;
    void fun1()
    {
    myValue = 4;
    }
    void main()
    {
    myValue = 2
    fun1();
    printf("myValue = %d",myValue);
    }

    正如您所猜测的,myValue 的值在 main() 末尾将为 4。

希望有帮助。

关于c - C 中的参数传递 - 指针、地址、别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29088971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com