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<stdio.h>下面),这样就保证了所有的函数可以顺利调用其他函数【函数只要声明过,就可以被其他函数调用】。
3、必须把函数声明放在任何源代码文件的 具体函数之前(一般也就是源代码的开头),才能保证这些具体的函数 调用其他函数时,这些被调用的函数时声明过的函数。
函数声明的一般形式
类型标识符 函数名();                //与函数定义的区别就是,把函数定义的大括号变成分号。
说明:只需要把函数定义的第一行拿过来,最后面加上一个分号,然后把整个函数体(包括 {} )都删除,这样就是函数声明。
函数定义 和 函数声明的区别:
1、函数定义有函数体,函数体里面确定了函数要实现的功能;
2、函数声明只是对已经定义的函数进行说明,没有函数体,谁调用这个函数就可以提前使用函数声明提前指明自己的参数类型以及返回值;
#include<stdio.h>
int addtwoshu(int a, int b);  //  函数声明放在所有源程序代码(所有函数的)的最前面,头文件后面,就是相当于把函数定义的 {} 变成一个分号即可。
int main()
{
     int result =addtwoshu(3,4);   
   printf("result=%d\n",result);  
     
}
int addtwoshu(int a, int b)  // 函数定义
{
   int sum=a+b;
   return sum;  
}
4、函数嵌套调用
注意:函数嵌套定义(在函数中定义另外一个函数)这样 是非法的。因为每一个函数都是 平行、单独的
void printhello1()
{
  printf("hello,how are you!\n");
   void printhello2()
    {
       printf("hello,how are you2!\n");   //这样是非法的
    }
}
//单独放在下面定义是可以的
void printhello2()
{
  printf("hello,how are you2!\n");
}
C语言中不允许在一个函数中定义另外一个函数(不允许嵌套定义),但是允许函数嵌套调用,也就是说:在调用一个函数的过程中,被调用的函数再去调用第三个函数。。。以此类推,如果有需要可以调用第四个第五个。。。
#include<stdio.h>
// 函数声明
void qtfunc1();
void qtfunc2();
void qtfunc3();
int main()  //主函数
{
    qtfunc1();
}
// 函数的定义
void qtfunc1()
{
    printf("qtfunc1()开始执行-----\n");
    qtfunc2();  //函数的嵌套调用
    printf("qtfunc1()结束执行-----\n");
}
void qtfunc2()
{
    printf("qtfunc2()开始执行-----\n");
    qtfunc3();   // 函数的嵌套调用
    printf("qtfunc2()结束执行-----\n");
}
void qtfunc3()
{
    printf("qtfunc3()开始执行-----\n");
    printf("qtfunc3()结束执行-----\n");
}
运行结果:

 

  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值