C&C++   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了C语言 函数值传递和址传递 - C语言零基础入门教程大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

目录

@H_618_2@
  • 一.简介 @H_618_2@
  • 1.函数声明:不需要实现这个函数的功能
  • 2.函数定义:必须实现这个函数的功能
  • 3.函数调用:调用之前必须先声明或者定义
  • 二.函数值传递
  • 三.函数址传递
  • 四.函数值传递和址传递区别
  • 五.猜你喜欢
  • 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门

    一.简介

    函数声明只是一个空壳,不会有具体的函数实现,而定义要实现函数的实现,例如:

    1.函数声明:不需要实现这个函数的功能@H_696_31@
    int sub(int x,int y); //只需要声明即可,不需要实现这个函数的功能
    

    2.函数定义:必须实现这个函数的功能@H_696_31@
    int sub(int x,int y) 需要实现这个函数的功能
    {
        return (x-y);
    }
    

    3.函数调用:调用之前必须先声明或者定义@H_696_31@

    函数在调用之前必须声明或者定义,否则会报错:找不到标识符,这也是为什么 hello world 中调用 printf 函数必须要包含 stdio.h 头文件的原因;

    二.函数值传递

    C 语言中,函数的参数传递方式有两种:值传递与地址传递。

    值传递:使用变量、常量、数组元素作为函数参数,在调用结束后,形参值的任何变化都不会影响到实参的值。举个例子:

    /******************************************************************************************/
    //@Author:猿说编程
    //@Blog(个人博客地址): www.codersrc.com
    //@File:C语言 函数值传递和址传递
    //@Time:2021/06/20 08:00
    //@motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
    /******************************************************************************************/ 
    
    #include <stdio.h>
    void func(int x, int y)
    {
        x = 100;
        y = 200;
        printf("func:x = %d, y = %d\n", x, y);
    }
    int main(void)
    {
        int a=10;
        int b=20;
         /*变量a、b为func函数的实际参数*/
        func(a, b);
        printf("main:a = %d, b = %d\n", a, b);
        return 0;
    }
    /*
    输出:
    func:x = 100, y = 200
    main:x = 10, y = 20
    */
    

    @H_256_33@main 函数中调用 func 函数,以整数类型 ab 作为实参传递,然在 func 函数中形参 xy 值发生改变,但是并以不会影响 @H_256_33@main 函数中 ab 的值,这就是所谓的值传递;

    三.函数址传递

    C 语言中,函数的参数传递方式有两种:值传递与地址传递

    址传递:使用指针变量或者内存地址作为函数参数,在调用结束后,实参跟随形参一起变化。举个例子:

    /******************************************************************************************/
    //@Author:猿说编程
    //@Blog(个人博客地址): www.codersrc.com
    //@File:C语言 函数值传递和址传递
    //@Time:2021/06/20 08:00
    //@motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
    /******************************************************************************************/ 
    
    #include <stdio.h>
    void func(int *x, int *y)
    {
        *x = 100;
        *y = 200;
        printf("func:x = %d, y = %d\n", x, y);
    }
    int main(void)
    {
        int a=10;
        int b=20;
         /*分别对变量a、b取地址,并作为func函数的实际参数*/
        func(&a, &b);
        printf("main:a = %d, b = %d\n", a, b);
        return 0;
    }
    /*
    输出:
    func:x = 100, y = 200
    main:x = 100, y = 200
    

    @H_256_33@main 函数中调用 func 函数,分别对变量 ab 取地址,并作为 func 函数的实参传递,由于形参 x 和实参 a,形参x和实参 a 指向同一个内存地址,在 func 函数中形参 xy 值发生改变,@H_256_33@main 函数中 ab 的值也会跟着一起改变,这就是所谓的址传递;

    四.函数值传递和址传递区别

    @H_618_2@
  • 值传递:实参是传递的值,并非地址,形参的值发生改变,实参不受影响;
  • 址传递:实参是传递的地址,并非值,形参的值发生改变,实参会跟着一起改变(因为实参和形参都是指向同一块内存地址);
  • 五.猜你喜欢

    1. C语言逻辑运算符
    2. C语言三目运算符
    3. C语言逗号表达式
    4. C语言 sizeof 和 strlen 函数区别
    5. C语言 strcpy 和 strcpy_s 函数区别
    6. C语言 memcpy 和 memcpy_s 区别
    7. C语言 数组定义和使用
    8. C语言 数组遍历
    9. C语言 数组下标越界
    10. C语言 数组内存溢出
    11. C语言 数组下标越界和内存溢出区别
    12. C语言 二维数组定义和使用
    13. C语言 二维数组行数和列数计算
    14. C语言 指针声明和定义
    15. C语言 指针 p++ / p–
    16. C语言 p++/§++/_(p++)/_p++
    17. C语言 使用指针遍历数组
    18. C语言 指针和数组区别
    19. C语言 数组指针
    20. C语言 指针数组
    21. C语言 指针数组和数组指针区别
    22. C语言 空指针 NULL
    23. C语言 void 指针
    24. C语言 野指针
    25. C语言 函数声明和定义
    26. C语言 函数声明和调用
    27. C语言 函数值传递和址传递

    未经允许不得转载:猿说编程 » C语言 函数值传递和址传递

    本文由博客 - 猿说编程 猿说编程 发布!

    大佬总结

    以上是大佬教程为你收集整理的C语言 函数值传递和址传递 - C语言零基础入门教程全部内容,希望文章能够帮你解决C语言 函数值传递和址传递 - C语言零基础入门教程所遇到的程序开发问题。

    如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

    本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
    如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
    标签: