【C语言】函数的定义、传参与调用(二)

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


💗个人主页💗

⭐个人专栏——C语言初步学习⭐

💫点击关注🤩一起学习C语言💯💫


 目录

导读:

1. 函数的嵌套调用

1.1 什么是嵌套调用

1.2 基础实现

1.3 调用流程解析

 2. 函数的链式访问

2.1 什么是链式访问

 2.2 基础实现

3. 函数递归

3.1 什么是递归

3.2 递归的两个必要条件 

3.3 用递归方法求n!

4. 小结练习 


导读:

在前面,我们了解了第一部分的函数的定义、传参与调用(一),在这里我们基本了解了该怎样定义和使用一个函数。

现在我们来进一步的学习函数的嵌套和递归💯

1. 函数的嵌套调用

1.1 什么是嵌套调用

C语言的函数定义是互相平行、独立的,也就是说,在定义函数时,一个函数内不能在定义另一个函数,即不能嵌套定义,但可以嵌套调用函数。

函数的嵌套调用指在一个函数中调用另一个函数,而被调用的函数又可以是其他函数的参数或返回值。这种嵌套调用的方式可以让程序更加灵活和高效。

1.2 基础实现

在调用函数时,需要注意以下几点:

  1. 函数名必须与函数定义的名称一致,包括大小写。
  2. 调用函数时,必须传递该函数所需要的参数,参数的顺序和类型必须与函数定义时一致。
  3. 如果函数没有参数,则在调用函数时应该留空参数列表

例如:

void B()
{
	printf("Hello, World!\n");
}
void A()
{
	B();
}
int main()
{
	A();
	return 0;
}

【C语言】函数的定义、传参与调用(二),c语言初步学习,c语言,开发语言,函数​ 

1.3 调用流程解析

【C语言】函数的定义、传参与调用(二),c语言初步学习,c语言,开发语言,函数

①执行main函数的开头部分

②遇函数调用语句,调用函数A,流程转去A函数

③执行A函数的开头部分

④遇函数调用语句,调用函数B,流程转去B函数

⑤执行B函数,如果再无其他嵌套的函数,则完成B函数的全部操作

⑥返回到A函数中调用B函数的位置

⑦继续执行A函数中尚未执行的部分,知道A函数结束

⑧返回main函数中调用a函数的位置

⑨继续执行main函数的剩余部分直到结束

 2. 函数的链式访问

2.1 什么是链式访问

在C语言中,可以使用函数的链式访问来简化对多个函数的调用过程。

所谓链式访问,就是通过函数返回值的方式,实现对多个函数的连续调用。具体来说,就是将一个函数的返回值作为另一个函数的输入参数,从而实现多个函数的顺序调用。

 2.2 基础实现

int add(int a, int b) 
{
    return a + b;
}
int multiply(int a, int b) 
{
    return a * b;
}
int main() 
{
    int x = 1;
    int y = 2;
    int z = 0;
    z = multiply(add(x, y), y);
    printf("(%d + %d) * %d = %d\n", x, y, y, z);
    return 0;
}

【C语言】函数的定义、传参与调用(二),c语言初步学习,c语言,开发语言,函数​ 

解析:

我们定义了两个函数add和multiply。

在main函数中,我们首先调用add函数,计算出x和y的和,然后将结果作为input传递给multiply函数,计算出input和y的乘积,最后将乘积的结果赋值给变量z。由于add函数返回值的类型和multiply函数的输入参数类型是一致的,所以我们可以直接将add函数的返回值作为multiply函数的输入参数,从而实现了链式访问。

3. 函数递归

3.1 什么是递归

程序调用自身的编程技巧称为递归( recursion)

递归做为一种算法在程序设计语言中广泛应用。

一个过程或函数在其定义或说明中有直接或间接 调用自身的 一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解, 递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。

递归的主要思考方式在于:把大事化小

3.2 递归的两个必要条件 

  • 存在限制条件,当满足这个限制条件的时候,递归便不再继续。
  • 每次递归调用之后越来越接近这个限制条件。

3.3 用递归方法求n!

int factorial(int n) 
{
    if (n == 0 || n == 1) 
    {
        return 1;  // n为0或1时,阶乘为1
    }
    else 
    {
        return n * factorial(n - 1);  // 递归调用自身,计算n-1的阶乘
    }
}
int main() 
{
    int n = 0;
    scanf("%d", &n);
    int res = factorial(n);  // 计算n的阶乘
    printf("%d! = %d\n", n, res);
    return 0;
}

【C语言】函数的定义、传参与调用(二),c语言初步学习,c语言,开发语言,函数

解析:

在上面的示例中,我们定义了一个递归函数factorial,用来计算n的阶乘。

当n为0时,阶乘为1;

否则,调用自身来计算n-1的阶乘,然后将结果与n相乘。

在main函数中,我们调用factorial函数,计算出5的阶乘,并打印计算结果。

【C语言】函数的定义、传参与调用(二),c语言初步学习,c语言,开发语言,函数

4. 小结练习 

函数的调用部分到这里基本就结束了,在闲暇实践感兴趣的小伙伴们可以做一下下面的小练习

1. 输入4个整数,找出其中最大的数。(嵌套调用)

2. 接受一个整型值(无符号),按照顺序打印它的每一位。(递归)

例如: 输入:1234,输出 1 2 3 4. 文章来源地址https://www.toymoban.com/news/detail-716001.html

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

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

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

相关文章

  • 学习-定义和调用求x的n次幂的函数

    任务描述 本关任务:定义求x的n次幂的函数,并返回计算结果。 相关知识 为了完成本关任务,你需要掌握如何定义函数。 函数的本质是一段可以重复使用的代码,每一个函数用来实现一个特定的功能,这段代码被提前编写好了,放到了指定的文件中,使用时直接调取即可。

    2024年02月08日
    浏览(25)
  • 【C语言】指针进化:传参与函数(2)

    莫道君行早,更有早行人。— 出自《增广贤文·上集》 解释:别说你出发的早,还有比你更早的人。 这篇博客我们将会深入的理解数组传参和函数指针等指针,是非常重要的内容,学好这部分才能算真正学懂C语言。 我们必须要对这方面理解透彻,才能让我们在写函数形参的

    2024年02月16日
    浏览(37)
  • Python学习笔记(四):函数的定义、函数的返回值、None类型、函数说明文档、函数的嵌套调用、局部变量、全局变量、global关键字

    目录 一、函数介绍 1. 函数是: 2. 使用函数的好处是: 二、函数的定义: 三、函数的参数 1.传入参数的功能是: 2.函数的传入参数 - 传参定义 3.注意事项: 4.练习:测量体温 四、函数的返回值 1.函数返回值的定义 2.None类型 五、函数说明文档 六、函数的嵌套调用 七、变量的

    2024年02月05日
    浏览(67)
  • 【C语言】#define 宏定义初步使用

    使用宏定义可以防止出错,提高可移植性,可读性,方便性等。 下面列举了一些成熟软件中常用的宏定义。 重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植: typedef unsigned char boolean; /* Boolean value type. / typedef unsigned long int uint32;

    2024年02月10日
    浏览(40)
  • 【DDD分布式系统学习笔记】RPC调用以及系统初步搭建

    modelVersion: 模型版本,指定POM模型的版本,目前使用的是Maven 4.0.0版本。 groupId: 项目的组织标识符,通常是组织的域名倒序。在这里是 cn.itedus.lottery。 artifactId: 项目的唯一标识符,通常是项目的名称。在这里是 Lottery。 packaging: 项目的打包方式,这里是 pom,表示这是一个聚合

    2024年01月18日
    浏览(51)
  • Shell 函数详解(函数定义、函数调用)

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

    2024年02月09日
    浏览(58)
  • C语言深度解析:函数的形参和实参与传值和传址(多角度分析,让你有一种相见恨晚的感觉!!!!)

    目录 一、前言 二、函数的形参和实参 🍑实参 🍎形参  🍇形参与实参之间的区别  🍐形参与实参之间的联系(重点!!!!)   三、函数的传值和传址(超重点!!!) 🍒例题分析 🍍错误分析  🥝 错误修改 🍋 深入理解 值传递与址传递  💦概念理解 四、进阶练习(

    2024年02月04日
    浏览(53)
  • 如何初步学习C语言(4)

    进入大学, 如果你好好学习,校招时拿一个好offer,走上人生巅峰。 如果你不学习,毕业等于失业,回家卖土豆。 这就是选择! if语句 C语言中如何实现循环呢? while语句-讲解 for语句(本系列只是初步学习,这个语句下个系列再说) do … while语句(下系列)

    2024年02月13日
    浏览(43)
  • 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)
  • Python 调用自定义函数

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

    2024年02月14日
    浏览(60)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包