从参数调用来分,函数调用的形式分为两种:
u 一种是参数赋值的(没有“&”)调用。其调用函数的一般格式为:
< 函数名 > (<实参列表>)
其中,函数名是已定义的函数的名字;实参列表有零个、一个或多个实际参数(用逗号分割)构成。如果是调用无参函数,则实参列表可以没有,但是括号不能省略。
每个实际参数(简称实参)可以是一个表达式,他们的个数以及对应的位置的类型应该和定义该函数时指定的形参类型相同,如果类型不同,则系统将利用类型转换,将实参的值转换成形参类型,然后赋给形参。形参和实参的个数应该相等。
u 一种是参数指向的(有“&”)调用。其调用函数的一般格式为:
< 函数名 > (<&参数列表>)
参数指向的函数调用,就是实参和形参共用同一块内存地址,参数指向的函数调用不存在类型转换,如果实参的类型和形参的类型不匹配,系统会报错。因为形参和实参共用同一块内存地址,所以调用函数结束后,形参的值会传递给实参。
例如:
主程序:
int a,b;
a = 8;
b = 9;
swap(&a,&b);
用户函数:
void swap(int x,int y)
{
int z;
z = y;
y = x;
x = z;
return ;
}
在函数调用之前,a的值为8,b的值为9,当用参数指向的函数调用之后,a的值和b的值发生了互换。