C语言初识函数二(上)

简介: C语言初识函数二(上)

一、函数的嵌套调用和链式访问


函数和函数之间可以根据实际需求进行组合,也就是相互调用;


       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()函数前声明,便可以直接运行了。

相关文章
|
8天前
|
存储 C语言
向函数传递结构体: C语言中的结构体参数传递详解
向函数传递结构体: C语言中的结构体参数传递详解
23 0
|
8天前
|
C语言
C语言中返回指针值的函数
C语言中返回指针值的函数
19 0
|
18小时前
|
C语言 C++
C语言学习记录——内存函数(memcpy、memmove、memcmp、memset、模拟实现memcpy、模拟实现memmove)
C语言学习记录——内存函数(memcpy、memmove、memcmp、memset、模拟实现memcpy、模拟实现memmove)
9 3
|
18小时前
|
存储 C语言
C语言学习记录——7000+字长文-复习&学习指针(指针、地址、指针变量、指针与数组、指针与函数、指针数组、多级指针)一
C语言学习记录——7000+字长文-复习&学习指针(指针、地址、指针变量、指针与数组、指针与函数、指针数组、多级指针)一
8 1
|
1天前
|
C语言
C语言——assert函数
C语言——assert函数
|
1天前
|
算法 搜索推荐 C语言
深入了解C语言的qsort函数:原理及相关知识
深入了解C语言的qsort函数:原理及相关知识
13 1
|
1天前
|
C语言
C语言——oj刷题——模拟实现库函数strlen
C语言——oj刷题——模拟实现库函数strlen
|
1天前
|
C语言
C语言函数递归详解:理解递归的原理与应用
C语言函数递归详解:理解递归的原理与应用
|
1天前
|
C语言
C语言函数大全--c开头的函数之复数篇
【6月更文挑战第3天】本篇介绍 C语言中 c开头的函数之复数篇【C语言函数大全】
13 5
C语言函数大全--c开头的函数之复数篇
|
2天前
|
存储 API C语言
C语言函数大全--b开头的函数
【6月更文挑战第2天】本篇介绍 C语言中 b开头的函数【C语言函数大全】
14 7
C语言函数大全--b开头的函数