PS:接上一篇函数文章,本篇继续:
1.函数的嵌套调用
Q:什么是函数嵌套调用?
A:函数和函数之间可以根据实际的需求进行组合,也就是相互调用的。
Q:使用函数嵌套调用实现打印三行 hehe
#include <stdio.h> void new_line() { printf("hehe\n"); } void three_line() { for (int i = 0; i < 3; i++) { new_line(); } } int main() { three_line(); return 0; }
效果展示:
嵌套讲解:
main函数先调用了three_line函数,在three_line函数里,three_line又调用了new_line函数,这就是函数的嵌套调用。下面是图解:
注:函数可以实现嵌套调用,但是不可以嵌套定义,函数都是相互独立的。错误示范举例如下:
这就是在A函数中定义B函数,这样是不允许的,编译器会报错。
2.链式访问
Q:函数的链式访问是意思?
A:把一个函数的返回值作为另外一个函数的参数。
Q:我们计算一个字符串的长度,如何来写呢?
A:代码如下:
#include <stdio.h> #include <string.h> int main() { int len = strlen("abcdef"); printf("%d\n", len); return 0; }
效果展示:
我们这里使用了两个函数,strlen 函数和 printf 函数。我们先使用 len 将 strlen 函数计算出来的字符串长度保存起来,然后交给 printf 函数,作为 printf 函数的参数,最终实现打印。
我们现在不使用 len 来保存值,直接打印试试
#include <stdio.h> #include <string.h> int main() { printf("%d\n", strlen("abcdef")); return 0; }
效果展示:
结果仍然正确。这里就是链式访问,将 strlen 函数的返回值作为 printf 函数的参数进行打印。
我们来看一段链式访问代码:
#include <stdio.h> int main() { printf("%d", printf("%d", printf("%d", 23))); return 0; }
这段代码打印出来是什么呢?我们来看一下: