【c语言形参和实参的区别】在C语言中,函数是程序设计的重要组成部分。在调用函数时,常常会涉及到“形参”和“实参”的概念。虽然它们都与函数参数有关,但两者在定义、作用和使用方式上有着明显的区别。以下是对C语言中形参和实参的详细总结。
一、基本概念
- 形参(形式参数):在函数定义时声明的变量,用于接收调用时传入的数据。它只是函数内部的一个占位符。
- 实参(实际参数):在调用函数时传递给函数的具体值或变量,用于填充形参的值。
二、主要区别总结
| 对比项 | 形参(Formal Parameter) | 实参(Actual Parameter) |
| 定义位置 | 在函数定义中声明 | 在函数调用时提供 |
| 是否需要类型 | 需要声明类型 | 需要类型匹配 |
| 是否可修改 | 可以在函数内部修改(如指针或引用) | 通常不能直接修改(除非通过指针) |
| 是否有值 | 初始值由实参决定 | 是具体的数值或变量 |
| 是否存在 | 函数定义中存在 | 函数调用时存在 |
| 作用 | 接收外部传入的数据,供函数内部使用 | 提供数据给函数,完成具体操作 |
三、示例说明
```c
include
// 函数定义,包含形参
void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
printf("函数内:a = %d, b = %d\n", a, b);
}
int main() {
int x = 10, y = 20;
// 调用函数,x和y是实参
swap(x, y);
printf("主函数中:x = %d, y = %d\n", x, y);
return 0;
}
```
输出结果:
```
函数内:a = 20, b = 10
主函数中:x = 10, y = 20
```
从这个例子可以看出,形参 `a` 和 `b` 在函数内部被交换了,但主函数中的 `x` 和 `y` 没有变化。这是因为C语言中默认是按值传递,即实参的值被复制给了形参,对形参的修改不会影响实参本身。
四、注意事项
- 如果希望函数能够修改实参的值,可以通过指针或引用(C99之后支持)来实现。
- 形参和实参的类型必须一致或兼容,否则可能导致编译错误或运行时错误。
- 形参可以是任何合法的变量名,只要在函数内部使用得当即可。
五、总结
在C语言中,形参和实参是函数调用过程中不可或缺的两个部分。理解它们之间的区别有助于编写更高效、更安全的代码。简单来说:
- 形参是函数定义中的变量,用于接收调用时的值;
- 实参是调用函数时提供的具体数据或变量。
掌握这两者的区别,是学习C语言函数调用的基础,也是进行高级编程的关键一步。


