函数包括了除函数名以外还有返回值和形参。
这个形参包括了传入参数和传出参数;
传入参数:就是数值的传递。在函数中不会修改这个参数,不会修改调用这个函数的函数的值。
例如
void exchange(int a,int b)
{
int temp;
temp = a;
a = b;
b = temp;
}
int main ()
{
int a =4;
int b = 5;
exchange(a,b);
printf("a = %d\n b = %d\n",a,b);
return 0;
}
输出的结果是
a = 4;
b = 5;
这是传参,仅仅是一个数值的传递。
在调用exchange函数的时候,空间也分配了另一个a,b变量名的空间,在exchange在调用完的时候,空间释放。
exchange函数里面的a,b和主函数里面的啊a,b的空间是不一样的。仅仅是名字一样而已。
例子:这个村子你叫张三,隔壁的村子也有一个叫张三。有一天隔壁的张三家里面有喜事,而不是你家有喜事。
根本就是两码事。
传出参数,一般传递的是地址。
例如上面这个例子,怎么讲a,b在exchange里面改变呢。
void exchange(int *a,int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
这时候传递的变量的地址。在函数调用的时候也是创建显得空间,只不过这片空间记载的是实参的地址。
正真在运行的时候通过地址找到实参的空间,将里面的数值改变。
还是上面张三为例。有喜事那家发出请柬,标明哪个村的张三家。那么去赴宴的人,按照家的地址去赴宴。
在需要改变指针变量的时候,需要传入的是指针的指针,也就是指针变量那片空间的地址。
一个函数如何返回多个值:
1.就是利用传出参数,来记载返回值。
2.返回一个数组。
3.返回一个结构体