C语言函数(6)--- 函数的嵌套调用与链式访问
  uUWKQE7Avyk4 2023年11月02日 50 0

一.函数的嵌套调用

在C语言中函数和函数是可以有机结合在一起的,如以下代码:

#include<stdio.h>
void one_hello(void){
	printf("hello!\n");
}
void three_hello(void){
	int i = 0;
	for (i = 0; i < 3; i++){
		one_hello();
	}
}
int main(void){
	three_hello();
	getchar();
	return 0;
}

上述代码创建了两个自定义函数 one_hello() 与 three_hello() ,one_hello()函数中的内容为调用printf()函数输出hello字样,three_hello()函数中创建了一个for循环当i<3的时候循环调用one_hello()函数,也就是函数的嵌套调用,在main()函数中只调用了three_hello()函数就可以输出三次 hello ,如图所示:

C语言函数(6)--- 函数的嵌套调用与链式访问_链式访问


二.函数的链式访问

我们可以将其理解为:把一个函数的返回值作为另外一个函数的参数

我们先来看一段代码:

#include<stdio.h>
#include<string.h>
int main(void)
{
int len = 0;
len = strlen("abc");
printf("%d\n",len);
getchar();
return 0;
}

这段代码相信大家已经可以看懂了,声明了一个变量len并赋值0(len=0)将strlen("abc"); 字符串长度函数计算的结果赋值给len(注意!使用strlen()函数的时候需要进行预处理指令 #include<string.h>),最后调用printf()函数输出len的值,程序输出的结果也不出我们所料,输出了3,如图所示:

C语言函数(6)--- 函数的嵌套调用与链式访问_函数嵌套_02

为了缩短我们的代码,我们可以将其写成一下形式:

#include<stdio.h>
#include<string.h>
int main(void)
{
	int len = 0;
	printf("%d\n",strlen("abc"));
	getchar();
	return 0;
}

我们着重来看printf()函数语句中的内容,%d占位符对应的是 strlen()函数计算字符串 “abc” 所得来的值,strlen()函数计算完成后又将值返回给printf()函数,最后输出,这样类似与把多个函数串联在一起的代码叫做函数的链式访问,同样程序输出的结果也为3,如图所示:

C语言函数(6)--- 函数的嵌套调用与链式访问_printf_03


我们再来看一段代码:

#include<stdio.h>
int main(void)
{
	printf("%d",printf("%d",printf("%d",43)));
	getchar();
	return 0;
}

这里我们可能会认为会输出 43 或者 43 43 43,但是当我们运行结果却出乎我们的意料,程序居然输出了 4321 这是为什么呢?原来每一个printf()函数的返回值都是由输出字符的个数决定的,比如说我输出了 99 则printf()函数的返回值就为 2 我输出了 9 则printf()函数的返回值就为 1 知道这个以后我们来看一下这段代码,最里层的printf()函数输出了字符43,返回值为2 所以第二个输出的字符为 2 ,再将 2 传入printf()函数中,返回值就为 1 ,所以输出的结果为 4321 

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
uUWKQE7Avyk4