c语言函数详解3——函数的嵌套调用和链式访问

刚刚开学了,所以又来更新新的文章了。最近数据结构与算法总算是初步入门了,c++也是学到了类的构造函数和析构函数,但是还是准备把c语言的相关所有内容以文章全部发出来之后,再来发数据结构与算法。这块的内容相关的代码非常多,个人也需要时间去写。数据结构与算法对语言的掌握程度有一定的要求,不过还是希望大家还能坚持从下来。因为这一块大部分老师因为语言的不同,实现的方式不同,就选择用伪代码来实现,我是打算使用c语言进行实现的。废话就聊到这里,现在开始今天的c语言教学。

     上次讲了函数传指针    没有看的大家可以康康,今天来聊一聊函数的嵌套调用和链式访问。

大家听到嵌套调用是不是有了这样的想像

#define _CRT_SECURE_NO_WARNINGS 1//取消警告
#include<stdio.h>
int text1() {
	int text2() {

	}
}
int main() {
	return 0;
}

但实际上并不是这样,再main函数外,每个函数的地位其实是平等的,真是情况应该是这样

函数可以嵌套调用,而不能嵌套定义

#define _CRT_SECURE_NO_WARNINGS 1//取消警告
#include<stdio.h>
int text1() {

}
int text2() {

}
int main() {
	return 0;
}

这里就举一个简单的嵌套调用的例子

#define _CRT_SECURE_NO_WARNINGS 1//取消警告
#include<stdio.h>
int text1() {
	printf("text1调用");
	return 0;
}
int text2() {
	text1();
	return 0;
}
int main() {
    texr2();
	return 0;
}

这里main函数就是调用了一个text2这样的一个嵌套函数

使用F10进入调试,F11开始逐步调试,可以发现开始这幅图表示开始调用text2这个函数, 继续调试发现

 当进在text2中经过text1时开始调用text1函数

最后的结果就是这样 ,在text2中嵌套了一个text1函数。

接下来来讲一下函数的链式访问。标准的将就是将函数的返回值作为函数的一个参数,这里同样举个例子

#define _CRT_SECURE_NO_WARNINGS 1//取消警告
#include<stdio.h>
#include<string.h>
int main() {
	int len =strlen("abc");
	printf("%d\n", len);
	printf("%d", strlen("abc"));
	return 0;
}

大家可以看一下这一段代码,这一段代码是利用了strlebn函数,这里的strlen函数是用于计算字符串长度的,这个函数的返回值为字符串的长度,这里是作为printf的参数。这就是链式访问

介绍到此了,那下面来看一下这段代码

#define _CRT_SECURE_NO_WARNINGS 1//取消警告
#include<stdio.h>
#include<string.h>
int main() {
	printf("%d", printf("%d", printf("%d", 43)));
	return 0;
}

这是一个很明显的链式访问,每一个%d打印的都是后面一个函数的返回值,这里来听我讲解。

printf首先打印43,相信这部分大家都没有什么问题,但是printf("%d,43)的返回值是什么,返回的是打印字符的个数,所以printf("%d,43)的返回值应该是2,所以第二printf所打印的应该是2,他的返回值是1,所以再打印1。这也就是这道题目的答案4321

 这一章较为简单,就先讲到这里。

作者又来挖坑了!!!! 下一章将函数递归 做好准备吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值