函数的形参列表
函数在定义的时候,可以定义“形参列表”,用于接收参数!形参列表就是定义一系列的参数,可以是变量或函数指针。形参变量用于接收函数调用的时候,传递过来的数据。
这里我们先讲解形参是变量的知识,后续再讲解形参是函数指针的知识。
根据函数的定义格式如下:
返回数据类型 函数名(形参列表)
{
函数体
}
那么,形参列表是变量的时候,就是如同定义变量一样,如下:
返回数据类型 函数名(数据类型名 变量名)
如果要定义多个参数变量,定义格式如下:
返回数据类型 函数名(数据类型名 变量名1, 数据类型名 变量名2, … 数据类型名 变量名N)
可以看到,形参列表就是定义多个变量的列表,定义情况有:
(1) 如果不定义形参列表,函数形参可以使用void关键字修饰;
(2) 如果只定义1个变量,可以如同定义变量一样,末尾不需要用引号“;”结束;
(3) 如果定义多个变量,在定义不同变量之间是有逗号“,”分隔开;
注意:虽然可以在形参列表中定义多个参数,但是,在编写程序的时候,要考虑函数模块之间的“耦合性”和“扩展性”。不要传递太多的参数。如果项目需求改动,需要修改某个参数,就会导致函数接口的改动,函数接口的改动对程序的改动很大,这种操作应该极力避免。
当学习到结构体之后,我们可以把多个参数封装到一个结构体中,函数的参数只需要传递一个结构体变量就OK了。那么,当有数据需要改动,只需要修改结构体的定义和数据,函数的接口不需要修改,那么,函数模块之间的耦合性就降低,提高程序函数模块之间的扩展性。这就是函数模块扩展性好的一个表现形式,也是定义函数时需要思考的注意点。
举例说明形参列表的定义如下:
void func1(int a); //表示func1函数接收一个int类型的参数
void func2(int a, int b, int c)//表示func2函数接收3个int类型的参数
那么,调用函数的时候,有:
(1) func1(8); 此时,调用func1函数,在参数中填入8这个数值,那么,就把8这个数值传递给形参变量a。等价于:
int a = 8;
所以,就是把8整数值赋给形参变量a;
(2) func2(6, 7, 8); 此时,调用func2函数,在参数列表中填入6, 7, 8这个数值,那么,就会按顺序把数值6赋给形参变量a,把数值7赋给形参变量b,把数值8赋给形参变量c。等价于:
int a = 6;
int b = 7;
int c = 8;
所以,就是按顺序,把调用func2函数时的参数,设置到形参变量。
那么,下面编写程序测试,看看怎么样使用定义函数的“形参列表”,测试代码如下:
程序运行结果如下:
可以看到,调用func1(10); 的时候,把实参10这个数值,传递给func1()函数的形参变量a;所以,在func1()函数中输出形参变量a的值,就是10这个数值。
同理,func2(6, 7, 8); 函数的调用,是把实参6, 7, 8分别赋给func2()函数的形参变量 a, b, c。等效于:
int a = 6;
int b = 7;
int c = 8;
所以,func2()函数的形成变量a, b, c分别得到6, 7, 8这些数值。
韦凯峰 Linux C/C++ 程序设计教程,Linux 系统编程,Openwrt 系统开发,微信:13926572996,QQ:1523520001,博客:www.mylinux.vip