一、函数的嵌套调用和链式访问
函数和函数之间可以根据实际需求进行组合,也就是相互调用;
1.嵌套调用
简单理解为A函数调用了B函数又调用了C函数
1. #include <stdio.h> 2. 3. int jisuan(float a,float b,float c) 4. { 5. float p = 0; 6. p=(a+b+c)/3; 7. if(p<60) 8. return 1; 9. else return 0; 10. } 11. int banji(int n) 12. { 13. float a = 0; 14. float b = 0; 15. float c = 0; 16. int h = 0; 17. int add=0; 18. while(n!=0) 19. { 20. scanf("%f %f %f",&a,&b,&c); 21. h=jisuan(a,b,c); 22. if(h==1) 23. add++; 24. n--; 25. h=0; 26. } 27. return add; 28. } 29. int main() { 30. int n = 0; 31. int add = 0; 32. scanf("%d",&n); 33. add=banji(n); 34. printf("%d",add); 35. return 0; 36. }
上面这个函数就是一个简单的调用,在main()函数中调用了banji(),而又在banji()函数中调用了jisuan()函数,组合实现了该代码。
注意事项:函数可以嵌套调用,不可以嵌套定义
2.链式访问
把一个函数的返回值作为另一个函数的参数,将函数像链条一样穿起来。
1. #include <string.h> 2. 3. int main() 4. { 5. int len = strlen("abcdef"); 6. printf("%d\n", len); 7. //链式访问 8. printf("%d\n", strlen("abcdef")); 9. 10. return 0; 11. }
上面的代码就实现了简单的函数链式访问,将strlen()函数得返回值作为printf()函数的参数
二、函数的声明和定义
1.函数的声明
1.告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。但是具体是不是存在,函数声明决定不了。
2.函数的声明一般出现函数的使用之前。要满足先声明后使用
3.函数的声明一般要放在头文件中。
1. //函数声明 2. //int Add(int, int); 3. //int Add(int x, int y); 4. // 5. //int main() 6. //{ 7. // int a = 0; 8. // int b = 0; 9. // //输入 10. // scanf("%d %d", &a, &b); 11. // //加法 12. // int c = Add(a, b);//函数调用 13. // //打印 14. // printf("%d\n", c); 15. // 16. // return 0; 17. //} 18. // 19. 函数的定义 20. //int Add(int x, int y) 21. //{ 22. // return x + y; 23. //}
下面就是上面函数的声明,告诉了编译器有一个add()的函数,参数类型为(int,int ),这里声明时只用要交代残数类型是什么,不用变量,下面展示的代码是两种声明方式,都可用,
1. //函数声明 2. //int Add(int, int); 3. //int Add(int x, int y); 4.
2.函数的定义
1.函数的定义是指函数的具体实现,交代函数的功能实现。
1. 函数的定义 2. //int Add(int x, int y) 3. //{ 4. // return x + y; 5. //}
这便实现了一个函数的简单定义。函数的定义还是一个特殊的定义说明
1. 2. //函数的定义-定义是一种特殊的声明 3. //int Add(int x, int y) 4. //{ 5. // return x + y; 6. //} 7. // 8. //int main() 9. //{ 10. // int a = 0; 11. // int b = 0; 12. // //输入 13. // scanf("%d %d", &a, &b); 14. // //加法 15. // int c = Add(a, b);//函数调用 16. // //打印 17. // printf("%d\n", c); 18. // 19. // return 0; 20. //}
以上代码便是一种特殊的声明,可不用在前面main()函数前声明,便可以直接运行了。