函数讲解(3)--函数的嵌套调用,链式访问与声明定义

52 篇文章 32 订阅
订阅专栏

目录

一.函数的嵌套调用

二.函数的访问方式之链式访问 

三.函数的定义和声明

1 函数声明:

2 函数定义:

一.函数的嵌套调用

定义:当程序执行函数的时候,会发现函数中存在着另一个函数,在函数中调用函数,被称为嵌套式调用

#include <stdio.h>
void test1()
{
 printf("hello world!\n");
}

void test2()
{
    int i = 0;
 for(i=1; i<5; i++)
   {
        test1();
   }
}
int main()
{
 test2();
 return 0;
}

       调用第一个函数后进入,在循环体中调用第二个函数,就好比循环的嵌套一样外层循环先执行一次,里层的循环就执行一圈,嵌套函数也是如此。

 需要注意的是:函数间只能嵌套调用,不可嵌套定义,那什么是嵌套定义?如下图代码(错误例子示范) 

//嵌套定义的错误示范
int  Add(int x, int y) {
    int  Sub(int x, int y) {
        return x - y;
    }
    return x + y;
}
int main()
{
    int a = 10;
    int b = 20;
    int sum = Add(a,b);
    printf("%d\n", sum);
    return 0;
}

         上图代码就是在一个函数中嵌套定义了另一个函数,这是万万不可的,而且系统会报错,是非法的代码。我们应该清楚的了解到:每一个函数之间都是独立的,可以根据实际的需求相互组合,也就是互相调用,但就是不允许嵌套定义!!!


二.函数的访问方式之链式访问 

定义:把一个函数的返回值作为另外一个函数的参数。

下面来看实验操作

         当我们需要计算数组的长度时,需要创建一个变量去接收strlen的返回值,然后输出变量才能知道数组的长度,有些费时间,费空间。其实有一种更方便快捷的访问方法--链式访问。如下图所示。

 链式访问其实就是将两个或多个结构像链子一样关联起来,A可以通过链子的方向找到B的所在地,B也可以通过链子反向找到A。如下图所示。 

strlen函数经过计算后,会返回一个整形数值,返回的值作为printf函数的参数进行输出。

int main() {
	printf("%d", printf("%d", printf("%d", 99)));
	return 0;
}

请各位来做一下这道题,计算一下最终结果。

代码讲解:首先这道题采用了三个printf函数,printf函数也有相应的返回值,而它的返回值就是输出的字符数量,返回值是是输出的字符数量,包括数字,字母,标点符号,空格等。

通过这个知识点,我们可以从里到外进行分步计算。

        首先最里面的printf输出的是99,99是两位数,那么返回的就是2个字节,将返回的值作为第二个printf的参数,会输出2,“2” 是1位数,所以会返回1个字节,1会作为最后一个printf函数的参数,输出1。所以最终的结果就是9921。各位想必已经了解了链式访问的基本方法了吧。

三.函数的定义和声明

1 函数声明:

a. 告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。  但是具体是不是存在,函数声明决定不了。

b. 函数的声明一般出现在函数的使用之前。要满足先声明后使用。

c. 函数的声明一般要放在头文件中的。

2 函数定义:

函数的定义是指函数的具体实现,交待函数的功能实现。

        首先来看函数声明,声明通过字面意思就可以知道他是用来向程序宣布它的存在的。

        就好比一个男生和喜欢的女孩恋爱了,男生向微信朋友圈官宣了她名草有主了hhh,这也就是间接告诉了朋友们他有女朋友了,她女朋友叫啥长啥样子,这样朋友们脑袋中也就会get到这个信息,到时候见到他俩在一起就不会感到诧异和惊奇了。这么说大家应该懂了声明的意义了。就是为了让程序知道它的存在。

int Add(int, int);//函数声明
int main() {
		int a = 10;
	    int b = 20;
	    int sum = Add(a,b);
	    printf("%d\n", sum);
		return 0;
}
//函数定义
int Add(int x, int y) {
	return x + y;
}

         当声明后,程序会进行记忆,在后面遇到Add函数后,会先跳过这个代码,继续往下执行,直到遇到此函数的操作步骤才会返回来执行。所以满足先声明后使用。很重要!

接下来讲一讲函数定义。

        就如同刚才的概念一样,函数得有一个设计思路,你想让变量或者代码生成一个什么样的内容,取决于它是经过怎样定义而成的。A公司想计算两个数的乘积,但他不会算,他花钱雇了一个程序员B帮他计算,B通过自己的方法算出来了将最终将结果交给了A公司,完成了交易,然后B就走了。当A若继续想计算另外几个值的乘积,就又可以找B做交易--程序可以进行多次调用函数实现        计算。

        大家需要注意的是:当要写的代码数量较少时,可以将函数声明定义放在一块,但以后在公司就业时,参与了一个代码量相当庞大的项目时,需要将函数声明与函数定义分开去书写。

        举个例子。当一个项目只有一个test.c文件时,这时有100个程序猿参与完成它,总不可能等A去写完,再由B,C,D,E....一个个的轮流书写吧,那得写到何年何月才能写完?项目是需要多人进行同时协作才能完成的,比如写一个计算器项目:是需要程序员A去完成加法的声明(放在test.h头文件)和加法的功能实现(test.c),B完成减法的声明与实现......如下图

         当他们完成了各自的任务,最后把每个人的代码拼接起来就可以完成一个完整的计算器项目了。这叫做模块化管理,分配任务,协同进行。

好了以上就是关于函数(4)的讲解了,希望对你们有所帮助!

                                                                                                                        仍是未完,待续h! 


C语言函数嵌套调用链式访问
weixin_63060867的博客
03-01 230
C语言函数嵌套调用链式访问
从0开始学c语言-14-关于(2)函数嵌套调用链式访问函数声明定义、静态库
qq_61558455的博客
09-08 267
告诉编译器这个函数叫什么,参数是什么,返回类型是什么。但是函数声明决定不了这个函数是不是存在的。(因为存在的函数需要定义)-函数声明一般出现在函数的使用之前。要满足先声明后使用。-函数声明一般要放在头文件中的注意函数声明和变量声明的区别,函数直接写好需要声明的,变量需要则extren开头。是指函数具体怎么实现的。3·代码演示第一步,建立好函数对应的头文件和源文件。第二步,在头文件中进行函数声明。第三步,在源文件中进行函数定义。第四步,在需要运用的源文件中先声明后使用。下面进行图示意。
函数的嵌套与定义 名称空间 作用域
aidi6601的博客
07-10 235
1 函数定义的三种方式 1空函数 2无参函数 有参函数 2 命名关键字传参 在函数定义的期间,放在*args与**kwasgs之间的参数叫做命名关键字传参 def func(x,y=1,*args,z=3,m,**kwargs): #感觉z默认参数,m是位置参数,z放在了m的前面,其实他们都是命名关键字参数 print(x,y) print(args...
函数嵌套定义
dengchou2870的博客
09-17 2316
目录 局部变量  全局变量 locals() globals()一个函数可以作为参数传入另一个函数传入一个函数 函数可以作为另一个函数的返回值不加括号绑定函数, 加括号调用函数语句 函数嵌套定义 python四个作用域 局部作用域      nonlocal语句 外部嵌套函数作用域 global语句 全局作用域 ...
函数对象/函数的嵌套定义与调用/名称空间和作用域
weixin_30399055的博客
07-10 193
一.函数对象 函数时第一类对象:函数名指向的值可以被当作参数传递   1.函数名可以被传递   2.函数名可以被当作参数传递给其他函数   3.函数名可以当作函数的返回值   4.函数名可以当作容器类型的参数 1.函数名可以被传递 def func(): print('from func') f=func f() # from func func() # fr...
C++函数二(函数嵌套调用和递归调用)
CX的博客
10-31 5419
函数嵌套调用 C++不允许对函数作嵌套定义,也就是说在一个函数中不能完整地包含另一个函数。在一个程序中每一个函数定义都是互相平行和独立的。虽然C++不能嵌套定义函数,但可以嵌套调用函数,也就是说,在调用一个函数的过程中,又调用另一个函数 所谓嵌套调用,是在调用一个函数并执行该函数的过程中,又调用另一个函数的情况。如在main()函数中调用了a函数,而在a函数的执行过程中又调用b函数。这就构成...
[ C语言 ] 函数嵌套调用--链式访问--声明--定义--递归--练习--函数(完)
CSDN博客
11-02 5938
文章目录 前言 一,函数嵌套调用 二,函数链式访问 三,函数声明 四,函数定义 五,递归 总结 前言 本节内容主要记录函数的剩余内容,前段内容可以参考上篇文章(为了方便起见,下方是上篇文章的链接) https://blog.csdn.net/qq_58325487/article/details/121068480?spm=1001.2014.3001.5501 本次记录的主要内容包括: 函数嵌套调用--链式访问--声明--定义--递归。 —————————...
C语言函数(下):函数嵌套调用 -- 链式访问 -- 声明 -- 定义 -- 递归 -- 练习
Ljy_cx_21_4_3的博客
02-25 1042
函数终章
C语言函数详解(嵌套调用链式访问声明定义、递归)
Lixinze__的博客
04-10 3830
1. 告诉编译器函数叫什么,参数类型是什么,返回类型是什么。但具体是不是存在,函数声明决定不了。2. 函数声明一般出现在函数的使用之前。要满足先声明后使用。3. 函数声明一般要放在头文件中的//函数声明定义int main()int a = 0;int b = 0;//加法return 0;//函数定义函数定义是指函数的具体实现,交代函数的功能实现。
18 - 函数定义、调用、嵌套
李黏黏的博客
04-26 3291
目录 一、函数介绍 二、定义函数 三、调用函数 四、函数的文档注释 五、函数的参数 六、函数的返回值 七、函数嵌套调用 一、函数介绍 1、什么是函数:把具有独立功能的代码块,组织为 一个小模块,在需要的时候调用这个小模块。 2、函数的作用: 对具备 相同逻辑的代码 进行封装。 提高代码的编写效率。 实现对代码的重用。 3、函数的使用步骤: 二、定义函数 1、语法格式: 2、说明: def是英文define的缩写。 函数名.
JavaScript的级联函数用法简单示例【链式调用】
10-17
JavaScript中的级联函数,也称为链式调用,是一种优雅的编程技巧,它允许你在单行代码中连续调用同一对象上的多个方法。这种技术在许多库和框架中被广泛使用,例如jQuery,其核心设计理念之一就是提供流畅的链式API...
Python-嵌套字典构造与调用的相关功能
08-10
以上就是关于Python嵌套字典构造与调用的相关功能的详细介绍,通过理解并熟练运用这些知识,可以更好地处理复杂、多层次的数据结构。在实际项目中,嵌套字典是解决许多问题的有效工具,尤其是在数据处理、配置管理...
php函数连续调用实例分析
10-23
这种技术被称为链式调用,因为它允许你在单行代码中连续调用同一个对象的多个方法,并且每个方法调用都会返回该对象自身,以便进一步调用其他方法。这种模式在创建简洁、可读性强的代码时非常有用。 链式调用的关键...
JavaScript 异步调用框架 (Part 4 - 链式调用)
10-29
在本篇文章中,作者提出了在JavaScript中,实现顺序执行异步操作时所遇到的一个普遍问题,即嵌套回调函数的结构,从而导致代码可读性和维护性较差。为此,作者探讨了链式调用这一概念,来优化异步操作的流程控制,...
jQuery的实现原理的模拟代码 -4 重要的扩展函数 extend
10-28
在jQuery的世界里,几乎所有的对象和函数都被设计为可以链式调用。这要归功于jQuery的核心——jQuery.fn,它是一个原型对象,所有jQuery对象都会从这个原型继承方法。对于要扩展jQuery的方法,之前的做法是在jQuery....
函数嵌套的定义与调用:
JIENIXIAOWU的博客
08-26 5912
1,函数嵌套 (1)函数嵌套调用:在函数内部又调用其他函数。 def index(): print(‘index’) ​ def func(): index() # 在定义 func 函数的时候不会直接调用 index 的方法 --> 函数定义的时候不执行代码 print(‘func’) ​ func() index # 通过 func()函数内部调用了index() 函数,打印出了 index func (2)函数嵌套定义:在函数内部又定义其他函数。 def outer(): x = 1 pri
C/C++函数嵌套调用
最新发布
2301_80162458的博客
12-01 1077
【代码】C/C++嵌套函数的简单例子。
C语言第七课:函数(下)——嵌套调用链式访问声明定义、模块化开发与代码的隐藏
weixin_59392935的博客
11-08 994
在上文中小伙伴们结合文末的习题练习,应该对函数的分类、参数以及调用有了一定的掌握。本文我们将进入到嵌套调用链式访问声明定义的学习中。
C learning_10 (函数嵌套调用链式访问函数声明定义函数递归)
qq_64446981的博客
05-04 1497
n");\n");这段代码中,定义了两个函数test()和test2(),其中test2()函数定义在test()函数中的,称为嵌套函数。但是,在C语言中是不支持嵌套函数的,因此这段代码编译时将会出现错误。总结:函数可以嵌套调用,但是不能嵌套定义。在C语言中,函数声明是指在函数使用之前,提前告诉编译器该函数的名字、参数类型和返回值类型等信息,以便编译器在编译时能够正确地编译函数的使用。函数声明一般要放在头文件中的。函数声明通常包括以下几个部分:1.
线性表详解:顺序存储与函数嵌套调用规则
"多个函数嵌套调用的规则以及线性表的详解" 在编程中,函数嵌套调用是一个常见的操作,尤其在Java等面向对象的语言中。多个函数嵌套调用的规则遵循“栈式管理”的原则,这意味着内存的分配和释放类似于栈的操作。栈...
写文章

热门文章

  • 计算机中各种进制之间的相互转换过程 21194
  • C语言——文件操作函数 fseek、ftell、rewind详解 19718
  • C++基础——拷贝构造函数 17675
  • C语言函数(2)--形参与实参的讲解与函数的调用 12723
  • C++基础——const成员函数 11669

分类专栏

  • 算法 15篇
  • 数据结构 18篇
  • C/C++ 5篇
  • C语言知识点 52篇
  • Linux 42篇
  • C++ 44篇

最新评论

  • Linux——进程信号详解

    rexsam111: 请问怎样验证中断?

  • C++基础——拷贝构造函数

    涛涛ALG: 开局暴击“ class Date { public: Date(int year = 1900, int month = 1, int day = 1) { _year = year; _month = month; _day = day; } // Date(const Date d) // 错误写法 Date(const Date& d) // 正确写法 _year = d._year; _month = d._month; _day = d._day; } private: int _year; int _month; int _day; }; int main() { Date d1; Date d2(d1); return 0; }”这段代码句法语法错误很多

  • C++重写函数、隐藏函数、重载函数的区别对比

    一个小脑袋: 写得不错呀博主,继续关注!

  • C++基础——函数重载

    新入坑的码农: 第三种类型里举的那个反例是否举错了?测试下来是能进行重载的

  • C++基础——初始化列表

    空鸣282: 第一个都是错的,构造函数没有默认参数你就直接写Data d1,你自己运行看会不会出错

最新文章

  • C++——多态调用和普通调用的本质区别
  • C++多态之——虚表地址所在内存空间的位置
  • C++多态练习题
2023年67篇
2022年93篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橙予清的zzz~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

PHP网站源码光明网站开发深圳百姓网标王龙岗seo优化沙井模板制作惠州网站关键词优化福田网络营销盐田网站建设设计大运seo网站优化观澜设计网站坑梓阿里店铺托管东莞百度爱采购大鹏SEO按效果付费龙华营销网站吉祥建网站惠州seo网站优化吉祥优秀网站设计同乐营销型网站建设南山网页制作福永百度seo南澳外贸网站制作宝安网站关键词优化坑梓英文网站建设西乡百姓网标王南山关键词排名观澜网站设计坂田网站推广工具东莞百度seo布吉网站搭建坑梓网站改版南山网络广告推广歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化