1. 前言
在c语言中,互相传递的参数可以分为两种:形式参数和实际参数。形式参数通常可以理解为函数定义中的参数,实际参数通常可以理解为函数调用时传递给函数的参数。
2. 形参和实参的定义
在c语言中,函数的定义和函数的调用是分开的。函数的定义通常需要在函数名称旁边列出函数的参数类型和名称,这些参数通常称为形式参数,如下所示:
int calculate(int a, int b) {
return a + b;
}
在上面的示例中,a和b都是calculate函数的形式参数。当calculate函数被调用时,需要传递一个或多个实际参数。实际参数是函数调用时传递给函数的参数。例如:
int result = calculate(2, 3);
在这种情况下,2和3是实际参数,它们分别用作calculate函数定义中的a和b的值。最后,函数的返回值被赋给result变量。
3. 区别
3.1 参数类型不同
形参和实参之间的一个显著区别是它们的类型。形参的类型通常在函数定义中指定,而实参的类型通常在函数调用中指定。例如:
int calculate(int a, int b) {
return a + b;
}
double result = calculate(2.5, 3.7);
在这个例子中,calculate函数定义了两个int类型的形式参数a和b。但是,第二行中的函数调用传递了两个double类型的实际参数。这会导致编译错误。
3.2 参数值不同
形参和实参的另一个区别是它们的值。形参的值是在函数调用时从实参传递过来的。实参的值是指定实参时指定的值。例如:
int calculate(int a, int b) {
return a + b;
}
int x = 2;
int y = 3;
int result = calculate(x, y);
在这个例子中,calculate函数被调用,并将变量x和y作为实际参数传递。函数本身将这些值作为形式参数a和b进行计算。
3.3 内存使用不同
C语言中,形参和实参的内存分配方式是不同的。形参在函数调用时,会创建一个新的内存空间来存储传递进来的实参。这意味着,形参不会改变实参的值。例如:
void increment(int x) {
x++;
}
int y = 5;
increment(y);
printf("y = %d", y);
在这个例子中,函数increment被调用,并传递变量y的值作为实际参数。在函数中,值5被存储到一个新的内存空间中,并将它作为形式参数x。在函数中,x的值被增量1,但是函数返回后,变量y的值仍然是5。
4. 总结
形参和实参在C语言中是两个不同的概念,它们具有不同的类型、不同的值和不同的内存使用方式。需要注意的是形参不会影响到实参的值。所以,在函数中需要修改实参的值时,需要使用指针等方式。
学习要点:
形参和实参在C语言中是两个不同的概念
形参通常在函数定义中指定,实际参数通常在函数调用中指定
形参和实参的类型、值和内存使用方式都不同