码迷,mamicode.com
首页 > 其他好文 > 详细

<C> 函数

时间:2018-04-06 18:34:17      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:直接   nbsp   实现   注意   封装   地址   知识点   bsp   strong   

一.函数相关知识点

1.定义:对做事步骤的封装

2.声明:void PrintArr();

3.组成:返回值类型+函数名+(参数);

注:声明函数的时候 参数可以不写名字 实现的时候必须写

4.位置:主函数上面 头文件下面

5.调用:函数名+(参数);

注:调用位置在主函数中

6.实现:这里就直接放一道例题:数组的输出

 1 #include<stdio.h>
 2 
 3 void PrintArr();
 4 
 5 int main()
 6 {
 7     PrintArr();
 8 
 9     return 0;
10 }
11 
12 void PrintArr()
13 {
14     int arr[10] = {0,1,2,3,4,5,6,7,8,9};
15     int i;
16     for(i=0;i<10;i++)
17     {
18         printf("%d ",arr[i]);
19     }
20 }

二.返回值 函数名 以及参数的知识点

1.返回值:

①有返回值:int  char  float  double  int*等等类型

②无返回值:void

2.函数名:个人定义即可 但是函数名要有意义 例如:ADD 每个单词首字母最好大写 功能与名称相对应

但是需要注意的是不能和系统的函数重名(这是编译器的要求)

3.参数:个数不限 0个或n个 但是参数是有类型的

注:函数什么时候结束? 答:遇到return就结束

4.函数的参数和返回值:

返回值的类型和参数类型可以不一样 每个参数类型也可以不一样

注:

①函数什么时候要参数? 答:当你所需要的东西需要外部提供的时候 例如:加了豆浆和水的豆浆机 才能出豆浆

②什么时候需要返回值? 答:外部需要我的运行结果 但是有的返回值不一定会用到 例如:喝豆浆就往外倒 不喝就放在豆浆机里

这里也放一道例题:

 1 #include<stdio.h>
 2 
 3 void ADD1(int a,int b);
 4 int ADD2(int a,int b);
 5 
 6 int main()
 7 {
 8     int a = 1;
 9     int b = 2;
10     ADD1(a,b);
11     printf("%d\n",ADD2(a,b));
12     return 0;
13 }
14 
15 void ADD1(int a,int b)
16 {
17     int sum = a + b;
18     printf("%d\n",sum);
19 }
20 
21 int ADD2(int a,int b)
22 {
23     int sum = a + b;
24     return sum;
25 }

注:ADD1(a,b); 这条语句中放的就是实参

下面在实现函数的过程中括号中的参数 即void ADD1(int a,int b) 就是形参

其实这就是个实参赋值给形参的过程 参数的关系是要一一对应

再放一道例题:定义一个函数 交换两数的值

在编程的过程中 你会发现 单纯的定义一个中间变量是无法交换两个数的值的 这是为什么呢?

因为每个作用域都有其独立的空间 所以 交换两个数的值 我们可以通过拿地址的方式来实现

 1 #include<stdio.h>
 2 
 3 void Change(int *p1,int *p2);
 4 
 5 int main()
 6 {
 7     int a = 1;
 8     int b = 2;
 9     Change(&a,&b);
10     printf("%d %d ",a,b);
11     return 0;
12 }
13 
14 void Change(int *p1,int *p2)
15 {
16     int temp = *p1;
17     *p1 = *p2;
18     *p2 = temp;
19 }

注:主函数中调用的时候:Change(&a,&b); 相当于int* p1 = &a;

三.值传递和地址传递

1.值传递:只是用实参的值

2.地址传递:当需要改变实参的内容的时候

注:指针的最大作用:跨作用域操作内存空间

[]的作用:数组传参的时候相当于*

直接放一道例题:数组传参

 1 #include<stdio.h>
 2 
 3 void PrintArr(int arr[],int nLen);
 4 
 5 int main()
 6 {
 7     int arr[10] = {0,1,2,3,4,5,6,7,8,9};
 8     PrintArr(arr,sizeof(arr)/sizeof(arr[0]));
 9 
10     return 0;
11 }
12 
13 void PrintArr(int arr[],int nLen)
14 {
15     int i;
16     for(i=0;i<nLen;i++)
17     {
18         printf("%d ",arr[i]);
19     }
20 }

 

<C> 函数

标签:直接   nbsp   实现   注意   封装   地址   知识点   bsp   strong   

原文地址:https://www.cnblogs.com/Aaaaaalei0612/p/8728271.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!