C 语言函数形参与实参的全面指南26


前言

在 C 语言中,函数是一个独立的、可重用的代码块,它执行特定的任务。当调用函数时,需要向其传递信息,以便函数可以执行所需的操作。这些信息通过函数的参数传递,分为形参和实参两种。

形参

形参是声明在函数原型中的变量,代表函数期望接收的数据。它们是函数内部使用的局部变量,在函数调用时被实参替代。

语法:


type param1, param2, ..., paramN;

* type:形参的数据类型
* param1、param2、...、paramN:形参的名称

实参

实参是在调用函数时传递给函数的实际数据值。它们替换函数原型中声明的形参,并为函数提供执行所需的信息。

语法:


funcName(arg1, arg2, ..., argN);

* funcName:函数名称
* arg1、arg2、...、argN:实参

形参与实参的类型转换

C 语言中,形参和实参的数据类型可以不同。当传递实参时,会根据形参的类型进行自动类型转换。

以下是一些常见的类型转换规则:* 较小的整型类型(如 int)可以提升为较大的整型类型(如 long int)。
* 较小的浮点型类型(如 float)可以提升为较大的浮点型类型(如 double)。
* 字符常量可以提升为整数。
* 字符串可以提升为字符串数组。

形参传递方式

C 语言提供了三种形参传递方式:

传值


最常见的传递方式。实参的值复制到形参中,因此对形参的修改不会影响实参的值。

传址


形参指向实参的地址,对形参的修改也会修改实参的值。

传引用


类似于传址,但使用更简洁的语法(paramName &),并且不能声明为数组。

实例以下是演示形参和实参的代码实例:

传值:


#include
void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
}
int main() {
int x = 10;
int y = 20;
swap(x, y); // 调用 swap 函数,传递 x 和 y 的副本
printf("x = %d, y = %d", x, y); // 输出 x 和 y 的原始值
return 0;
}

输出:
x = 10, y = 20

传址:


#include
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int x = 10;
int y = 20;
swap(&x, &y); // 调用 swap 函数,传递 x 和 y 的地址
printf("x = %d, y = %d", x, y); // 输出 x 和 y 的修改后值
return 0;
}

输出:
x = 20, y = 10

最佳实践

使用形参和实参时,请遵循以下最佳实践:* 始终使用一致的参数名称,以便易于阅读和维护。
* 根据需要使用适当的传递方式。
* 正确类型化参数,以避免意外的类型转换。
* 对于按值传递的形参,不要对它们进行修改,否则会影响实参的值。
* 对于按地址或引用传递的形参,要小心避免指针错误。

2024-10-18


上一篇:C 语言 strlen() 函数:计算字符串长度的神器

下一篇:C 语言输入输出指南