3.5 函数的嵌套调用与链式访问
嵌套调用:注意函数的嵌套调用是可行的,函数的嵌套定义(在一个函数里定义另一个函数)禁止的
链式访问:把一个函数的 返回值 作为另外其它函数的参数
int main()
{
int len = strlen("abcd");
printf("%d\n", len);
//链式访问(就像链条一样把这些函数串起来)
printf("%d\n", strlen("abcd"));
return 0;
}
注:(1)一定是 返回值 作为另外函数的参数(所以必须要有返回值)
int main()
{
printf("%d", printf("%d", printf("%d", 43)));
} //打印出的结果是4321
printf("%d", 43)打印出43,但打印值并不是其函数的返回值,printf返回值是这一次在屏幕上打印出的字符的个数,所以此时返回值是2,即printf("%d", printf("%d", 43))为printf("%d", 2)。此时打印出的字符个数是1,所以最后打印出1。因此打印出的结果是4321!
(2)写函数的时候若不写返回值,默认返回类型是int。建议不管什么函数,一定要写上返回类型!
3.6 函数的声明与定义
函数一般定义在前面更好,要不然会有警告(代码是从前往后扫描)。如果想把函数放在后面,
则在前面要先进行声明,比如写上:int ADD(int x, int y); //里面xy可写可不写
函数声明:
(1)告诉编译器一个函数的名字,参数和返回类型。但是函数是否真的存在,函数声明无法决定
(2)函数声明一般出现在函数的使用之前,要满足先声明后使用
(3)函数的声明一般是放在头文件中的
注:关于第(3)点的说明:
我们一般是把主函数(test.c)、自定义函数(add.c)、函数声明(add.h)放在三个不同文件里,其中主函数(test.c)、自定义函数(add.c)都在一个源文件底下,函数声明(add.h)在头文件底下。
要想使用这个函数,只需要在主函数前写上 #include“add.h” 即可。<注意是双引号>
(这样的话进行了模块的划分,更加方便)