1.嵌套调用
嵌套调用就是函数之间的互相调用,每个函数就像一个乐高零件,正是因为多个乐高的零件互相无缝的配合才能搭建出精美的乐高玩具,也真是因为函数之间有效的互相调用,最后写出相对大型的程序。
例:
#include<stdbool.h>
#include<stdio.h>
_Bool is_leap_year(int y)
{
if (((y % 4 == 0) && ((y % 100) != 0)) || (y % 400 == 0))
return true;
else
return false;
}
int get_days_month(int y, int m)
{
int days[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
// 1 2 3 4 5 6 7 8 9 10 11 12 刚好对应月份
int day = days[m];
if (is_leap_year(y) && m == 2)
{
day += 1;//闰年是29天,所以调用一个函数来判断是否为闰年
}
return day;
}
int main()
{
int year = 0;
int month = 0;
scanf("%d %d", &year, &month);//2008 8
int days = get_days_month(year, month);
printf("%d\n", days);
}
这一段代码,完成了一个独立的功能。代码中反应了不少函数调用,但是注意函数不能嵌套定义
函数自己调用自己,叫做函数递归
2.链式访问:
所谓链式访问就是将一个函数的返回值作为另一个函数的参数,就像链条一样将函数串起来就是函数的链式访问。
#include<string.h>
int main()
{
printf("%d\n", strlen("abcdef"));//strlen函数的返回值直接作为printf函数的参数
return 0;
}
int main()
{
printf("%d", printf("%d", printf("%d", 43)));
return 0;
}
这个函数的结果是4321,
printf函数返回值值是打印在屏幕上字符的个数!
所以首先执行printf(“%d”,43),打印43出来,返回值是2(43两个字符),打印2,返回值是1(2一个字符) ,所以最后打印4321