马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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);
}
|