c语言中形参和实参有什么区别

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语言中是两个不同的概念

形参通常在函数定义中指定,实际参数通常在函数调用中指定

形参和实参的类型、值和内存使用方式都不同

后端开发标签