在函数使⽤的过程中,把函数的参数分为:实参和形参 举例之前的代码:

#include <stdio.h> 
int Add(int x,int y) 
{ 
	//以下代码可以简化成 
	//return = x+y; 
	int z = 0; 
	z = x+y; 
	return z; 
} 
 
int main() 
{ 
	int a = 0;
	int b = 0;
	//输⼊ 
	scanf(“%d %d”,&a,&b); 
	//调⽤⾃定义加法函数Add,实现a和b的想家 	//求和的结果放在r中 
	int r = Add(a,b); 
	//输出 
	printf(“%d\n”,r); 
	return 0; 
} 

1.实参和形参

1.1实参

上⾯代码中,第2~9⾏是Add函数的定义, 有了函数后,在第17⾏调⽤Add函数。 我们把第17⾏调⽤Add函数时,传递给函数的参数a和b,称为实际参数,简称实参,实际参数就是真实传递给函数的参数。

1.2形参

上⾯代码中,第2⾏定义函数的时候,在函数名Add后的括号中写的x和y,称为形式参数,简称形参,为什么叫形式参数?实际上,如果只是定义了Add函数,⽽不去调⽤的话,Add函数的参数x和y只是形式上存在的,不会向内存申请空间,不会真实存在的,所以叫形式参数。形式参数只有在函数被调⽤的过程中为了放实参传递过来的值,才向内存申请空间,这个过程就是形参的实例化

2.实参和形参的关系

虽然提到了实参时传递给形参的,它们之间是有联系的,但是形参和实参各⾃是独⽴的内存空间。这个现象是可以通过调试(F10)来观察的。
请看示例:

Image

我们在调试的时候可以观察到,x和y确实得到了a和b的值,但是x和y的地址与a和b的地址是不⼀样的,所以我们可以理解为形参是实参的⼀份临时拷⻉。
补充:
函数的参数也可以是更加复杂的类型,可以是数组,也可以是指针。