• C语言函数调用


    1、函数调用的一般形式

    注意严格区分:函数调用 和 函数定义 这两个概念的区别。

    一般形式:

    函数名(实参列表);

    说明:

    a)、若调用的是没有形参的函数,实参列表可以没有,但是括号不能省略;若实参列表包含多个参数,则各个参数之间用逗号分开。对于函数中,如果形参包含多个参数,则也用逗号分开。

    b)、实参、形参,个数要相等,类型要一致,按顺序对应,一一传递。

    2、函数调用的方式

    按函数调用在程序中出现的位置,由三种函数调用的方式:

    A、把函数作为一个语句;

    printhello();

    B、函数出现在一个表达式中,这种表达式称为函数表达式,这个时候要求函数带回一个确定的值以参加表达式的运算。

    result =whichmax(13,18) * 100;   //调用函数比较两个数的大小,把函数返回的结果再进行运算。

    C、甚至函数调用可以作为 函数的参数,也就是把函数嗲用作为一个函数的实参。

    result =whichmax(13,whichmax(12,19));   //先调用函数比较12,19两个数的大小,把函数返回的结果与13进行比较大小

    3、函数声明

    1、C语言规定,函数使用之前必须先声明函数(函数的定义就相当于函数的声明,函数的声明就是函数自己说明自己)

    2、函数声明代码放在最前面所有的函数定义之前(就是头文件的下面 #include下面),这样就保证了所有的函数可以顺利调用其他函数【函数只要声明过,就可以被其他函数调用】。

    3、必须把函数声明放在任何源代码文件的 具体函数之前(一般也就是源代码的开头),才能保证这些具体的函数 调用其他函数时,这些被调用的函数时声明过的函数。

    函数声明的一般形式:

    类型标识符 函数名();                //与函数定义的区别就是,把函数定义的大括号变成分号。

    说明:需要把函数定义的第一行拿过来,最后面加上一个分号,然后把整个函数体(包括 {} )都删除,这样就是函数声明。

    函数定义 和 函数声明的区别:

    1、函数定义有函数体,函数体里面确定了函数要实现的功能;

    2、函数声明只是对已经定义的函数进行说明,没有函数体,谁调用这个函数就可以提前使用函数声明提前指明自己的参数类型以及返回值;

    1. #include
    2. int addtwoshu(int a, int b); // 函数声明放在所有源程序代码(所有函数的)的最前面,头文件后面,就是相当于把函数定义的 {} 变成一个分号即可。
    3. int main()
    4. {
    5. int result =addtwoshu(3,4);
    6. printf("result=%d\n",result);
    7. }
    8. int addtwoshu(int a, int b) // 函数定义
    9. {
    10. int sum=a+b;
    11. return sum;
    12. }

    4、函数嵌套调用

    注意:函数嵌套定义(在函数中定义另外一个函数)这样是非法的。因为每一个函数都是平行、单独的

    1. void printhello1()
    2. {
    3. printf("hello,how are you!\n");
    4. void printhello2()
    5. {
    6. printf("hello,how are you2!\n"); //这样是非法的
    7. }
    8. }
    9. //单独放在下面定义是可以的
    10. void printhello2()
    11. {
    12. printf("hello,how are you2!\n");
    13. }

    C语言中不允许在一个函数中定义另外一个函数(不允许嵌套定义),但是允许函数嵌套调用,也就是说:在调用一个函数的过程中,被调用的函数再去调用第三个函数。。。以此类推,如果有需要可以调用第四个第五个。。。

    1. #include
    2. // 函数声明
    3. void qtfunc1();
    4. void qtfunc2();
    5. void qtfunc3();
    6. int main() //主函数
    7. {
    8. qtfunc1();
    9. }
    10. // 函数的定义
    11. void qtfunc1()
    12. {
    13. printf("qtfunc1()开始执行-----\n");
    14. qtfunc2(); //函数的嵌套调用
    15. printf("qtfunc1()结束执行-----\n");
    16. }
    17. void qtfunc2()
    18. {
    19. printf("qtfunc2()开始执行-----\n");
    20. qtfunc3(); // 函数的嵌套调用
    21. printf("qtfunc2()结束执行-----\n");
    22. }
    23. void qtfunc3()
    24. {
    25. printf("qtfunc3()开始执行-----\n");
    26. printf("qtfunc3()结束执行-----\n");
    27. }

     

  • 相关阅读:
    将安全作为首要目标 — Venus 的现状和前景展望
    Kettle Spoon数据交换工具图文说明
    java面试题整理《基础篇》五
    基于显扬科技3D机器视觉HY-M5在汽车行业曲轴抓取上下料的应用
    738. 单调递增的数字
    开源免费的对象存储Minio
    Linux廉价磁盘冗余队列(RAID)
    坚持五件事,带你走出迷茫困境
    【我的前端】CSS启示录:CSS写出超级美观的阴影效果
    Redis基础
  • 原文地址:https://blog.csdn.net/qq_48516121/article/details/126902527