实际参数(实参):
真实传递给函数的参数,叫做实参。
实参可以是:常量,变量,表达式,函数等
无论实参是何种类型的值,在进行函数调用时,它们都必须有确定的值,以便将这些值传递给形参
形式参数(形参):
形式参数是指函数名后括号中的变量,因为形式参数只有在函数调用的时候才实例化(分配给内存),所以叫做形式参数。形式参数在使用完后就会自动销毁,因此形式参数只有在函数中有效
下面举一个例子来更好的说明实参和形参:
void Swap(int x, int y)
{
int z = x;
x = y;
y = z;
}
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
printf("打印前:a=%d b=%d\n", a, b);
Swap(a, b);
printf("打印后:a=%d b=%d\n", a, b);
return 0;
}
运行代码后,结果如下图:
因为Swap函数在调用的时候,x,y也会拥有自己的空间,同时也拥有和实参一模一样的内容。
所以我们可以简单的认为:当实参传递给形参的时候,形参是实参的一种临时拷贝,对形参的修改不会影响实参。
下面对代码进行修改,来达到交换的效果:
void Swap(int *px, int *py)
{
int z = *px;
*px = *py;
*py = z;
}
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
printf("打印前:a=%d b=%d\n", a, b);
Swap(&a, &b);
printf("打印后:a=%d b=%d\n", a, b);
return 0;
}
就可以很清楚的看到,函数的效果达到了。