形参与实参
形式参数:定义有参函数时,函数名后括号中的参数被称为“形式参数”,简称“形参”;
实际参数:调用有参函数时,函数名后括号中的参数被称为“实际参数”,简称“实参”。
实参可以是常量、变量或表达式,但必须有确定的值;
实参和形参必须个数相等、顺序对应、类型匹配,即数据类型必须相同或赋值兼容。
参数的传递方式
值传递
函数的参数是变量、常量、数组元素时,实参传值给形参使用「值传递」。
值传递是单向的,系统为形参开辟单独的内存空间,并将实参的值赋给形参。在函数调用结束后,形参的内存空间被立即释放,不会影响实参的值。
地址传递
函数的参数是数组名或指针时,实参传递数组的首地址或指针的值给形参,形参接收到的是地址,称为“地址传递”。
形参在取得该首地址之后,与实参共同拥有一段内存空间,形参的变化也就是实参的变化。
用地址传递交换两个数的值:
#include<stdio.h>
void swap(int *a,int *b)
{
int t;
t=*a;
*a=*b;//修改地址中储存的值
*b=t;//修改地址中储存的值
}
int main()
{
int a=3,b=5;
printf("a=%d,b=%d\n",a,b);
swap(&a,&b);
printf("a=%d,b=%d\n",a,b);
return 0;
}