C语言 函数的嵌套调用

这篇具有很好参考价值的文章主要介绍了C语言 函数的嵌套调用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

C语言的函数定义是互相平行、独立的,也就是说,在定义函数时,一个函数内不能再定义另一个函数,即不能嵌套定义,但可以嵌套调用函数,即,在调用一个函数的过程中,又调用另一个函数。
如下图所示:表示的是两层嵌套(连main一共三层函数)。
C语言 函数的嵌套调用
其执行过程时:
①执行main函数的开头部分
②遇到函数调用语句,调用函数a,流程转去函数a
③执行a函数的开头部分
④遇到函数调用语句,调用函数b,流程转去函数b
⑤执行b函数,如果再无其他嵌套的函数,则完成b函数的全部操作
⑥返回到a函数中调用b函数的位置
⑦继续执行a函数中尚未执行的部分,直到a函数结束
⑧返回main函数中调用a函数的位置
⑨继续执行main函数中剩余部分直到结束
【例题】
输入4个整数,找出其中最大的数。用函数的嵌套调用来处理。
【思路】
定义函数Max4,用来实现找出4个数中的最大者这个功能。定义Max2函数,用来实现找出两个数中的大者。在main函数中调用Max4函数,然后在Max4中调用另一个函数Max2。在Max4中通过多次调用Max2函数,可以找出4个数中的大者,然后把它作为函数值返回main函数,在main函数中输出结果。
【代码实现】

int Max2(int x,int y)
{
	return(x>y?x:y);
}
int Max4(int w,int x,int y,int z)//定义Max4函数
{
	int Max2(int x,int y);//对Max2的函数声明
	int m;
	m=Max2(w,x);//调用Max2函数,得到w,x两个数中的大数放在m中
	m=Max2(m,y);//调用Max2函数,得到w,x,y三个数中的大数放在m中
	m=Max2(m,z);//调用Max2函数,得到w,x,y,z四个数中的大数放在m中
	return m;//把m作为函数值带回main函数
}
int main()
{
	int a,b,c,d;
	printf("从键盘输入4个整数:\n");//提示输入4个数
	scanf("%d%d%d%d",&a,&b,&c,&d);//输入4个数
	int m;
	m=Max4(a,b,c,d);//调用Max4函数,得到4个数中最大者
	printf("4个数中最大的数为:%d",m);//输出4个数中最大者
	return 0;
}

【结果】
C语言 函数的嵌套调用文章来源地址https://www.toymoban.com/news/detail-456753.html

到了这里,关于C语言 函数的嵌套调用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言和Rust语言的互相调用(2)(Rust调用C)

    1.创建项目 rust调用c方式挺多的,这里采用最通俗易懂的方法,用构建脚本进行构建整个项目。 2.编辑build.rs的内容 这里的build.rs:若要创建构建脚本,我们只需在项目的根目录下添加一个 build.rs 文件即可。这样一来, Cargo 就会先编译和执行该构建脚本,然后再去构建整个项

    2024年02月02日
    浏览(51)
  • 为什么hooks不能在循环、条件或嵌套函数中调用

    hooks不能在循环、条件或嵌套函数中调用 为什么? // 20231120更新 我觉得还是先把答案说出来,再去看为什么比较合适。 其实就是一句话,因为函数组件渲染分两种场景 一、首次渲染 二、更新组件 原因就是,函数组件在首次渲染的时候,碰到hook语句时,是去创建一个空的

    2024年02月04日
    浏览(55)
  • 05-python之函数-函数的定义/函数的参数/函数返回值/函数说明文档/函数的嵌套使用/函数变量的作用域

    对应输出如上,没有使用len()函数,对应的子算出字符的长度,但是代码整体写的就很别扭。代码过于重复,代码中唯一不一样的地方就是被统计的字符串不同。同时对应的,代码整体也就会比较低效。可以使用函数,优化过程,先定义函数。 同样的输出,效果一样,两者

    2024年01月19日
    浏览(80)
  • 探究C#中Class和Struct互相嵌套的内存问题

    先回顾一下C#的内存种类 栈区:由编译器自动分配释放 ,存放值类型的对象本身,引用类型的引用地址(指针),静态区对象的引用地址(指针),常量区对象的引用地址(指针)等。其操作方式类似于数据结构中的栈。 堆区(托管堆):用于存放引用类型对象本身。在c#中

    2024年02月08日
    浏览(51)
  • VUE3子表格嵌套分页查询互相干扰的问题解决

    VUE3在表格中嵌套子表格 子表格的分页查询互相干扰的问题解决 如果不需要做子表格的分页查询,那么可以直接在主表格中嵌套子表格,有两种方式;一种是主表格加载的同时加载子表格数据,另一种是点击展开时加载子表格数据,尽量使用第二种方式;代码如图1-1所示;

    2024年02月19日
    浏览(39)
  • 【我爱C语言】详解字符函数isdigit和字符串转换函数(atoi和snprintf实现互相转换字符串)&&三种strlen模拟实现

    🔍个人主页 : @啊森要自信的主页 ✏️ 真正相信奇迹的家伙,本身和奇迹一样了不起啊! 欢迎大家关注🔍点赞👍收藏⭐️留言📝希望看完我的文章对你有小小的帮助,如有错误,可以指出,让我们一起探讨学习交流,一起加油鸭。 本小节我们将学习字符分类函数,字符

    2024年02月04日
    浏览(55)
  • Shell 函数详解(函数定义、函数调用)

    Shell 函数的本质是一段可以重复使用的脚本代码,这段代码被提前编写好了,放在了指定的位置,使用时直接调取即可。 Shell 中的函数和C++、Java、Python、C# 等其它编程语言中的函数类似,只是在语法细节有所差别。 Shell 函数定义的语法格式如下:  对各个部分的说明: f

    2024年02月09日
    浏览(58)
  • 54-函数的3种定义,函数的4种调用:函数模式调用,方法模式调用,构造函数模式调用,apply call bind调用

    一.函数的3种定义  1.函数的声明定义:具有声明提升 2.函数的表达式定义 3.构造函数定义 var 变量 = new F unction(\\\"形参1\\\",\\\"形参2\\\",\\\"形参3\\\",\\\"方法体\\\"); 二.函数的4种调用 1普通模式调用 2. 内联模型 函数模式调用, this 指向 window  

    2024年01月25日
    浏览(48)
  • 【C++】结构体 - 定义和使用,结构体数组,结构体指针,结构体嵌套结构体,结构体做函数参数,结构体 const

    结构体属于用户自定义的数据类型,允许用户存储不同的数据类型。 struct 结构体 {结构体成员列表}; 通过结构体创建变量的方法有三种: struct 结构体名 变量名 struct 结构体名 变量名 = {成员1值, 成员2值, …} 定义结构体时顺便创建变量 总结三点: 定义结构体时的是

    2024年02月07日
    浏览(56)
  • Python 调用自定义函数

    新手入坑。 通常我们需要把公共函数提出来,作为公共资源调用。也避免了代码的重复书写。 比如我们在项目内创建我们的py脚本路径如下: 在公共方法中定义方法: 在其他脚本中调用如下:

    2024年02月14日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包