|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 Kotori 于 2017-8-11 13:39 编辑
参数和指针
1>参数和返回值
设计函数应该遵循“一个函数实现一个功能”的原则;
函数一般有返回值,也有函数没有返回值,这时会有“通过返回值告诉用户函数是否调用成功”的做法。
2>形参与实参
形参指定义函数时的参数,主要的实现空间分配,了解函数需要传入的参数,以及在函数中使用传入参数。
实参指在调用函数时给函数传入的参数。
- #include <stdio.h>
- int max(int a, int b);
- int max(int a, int b) //a,b为形参
- {
- if (a > b)
- {
- return a;
- }
- else
- {
- return b;
- }
- }
- int main()
- {
- int i=1, j=2;
- int k;
- k = max(i, j); //i,j为实参
- printf("%d" ,k);
- return 0;
- }
复制代码
3>传值和传址
传值和传址是向函数传递参数的两种方式。传值不改变变量在当前作用域的值,相当于在函数中复制了这个值。而传址则是传入一个参数的实际地址,因此对它的修改是全局的。当传的参数体积较大时,传址更灵活,更节省空间。如果不想这个传址的数据被修改,可用const修饰。
4>传数组
C语言中没有直接传递整个数组作为参数的方法,实际上传入的是数组的地址。因此,下面两种方法并没有区别:
- int max(int a[5]);
- int max(int a[]);
复制代码
5>可变参数
C语言中实现可变参数需引入头文件<stdarg.h>,其内部通过指针对参数进行依次获取,参数不能重复获取。下面是以printf为原型模板。
- #include <stdarg.h>
- ......
- int myprintf(char *str,...) //...作为占位符,表示参数个数未知,第一个参数不可省
- {
- ......
- va_list vap; //定义参数列表,vap为参数列表名
- va_start(vap, str); //初始化参数列表,第一个为参数列表名,第二个参数为定义函数的第一个参数
- ......
- <变量名> =va_arg(vap, <变量类型>); //从参数列表中依次获取参数,注意获取单个字符时,变量类型为int;
- ......
- va_end(vap);
- }
复制代码
|
评分
-
查看全部评分
|