C语言形参和实参的概念
C语言函数参数可以分为两种类型:形式参数(简称形参)和实际参数(简称实参),这两种参数类型在函数的定义和调用过程中扮演着不同的角色。
形式参数(形参)
形参是在函数定义时声明的变量。这些变量在函数体内部使用,用于接收调用函数时传递的值。形参只在函数内部有效,其作用域仅限于函数体内。当函数被调用时,形参会被初始化为调用者提供的实参值。
让我们看一个简单的例子来说明形参的概念:
int add(int a, int b) { return a + b; }
在这个例子中,a 和 b 就是形参,它们在函数 add 的定义中声明,并在函数体内使用。
实际参数(实参)
实参是在调用函数时传递给函数的实际值,这些值会被复制到对应的形参中。实参可以是常量、变量、表达式或者函数调用的结果。
继续使用上面的 add 函数,我们来看一个调用的例子:
int result = add(5, 3);
在这个函数调用中,5 和 3 就是实参。它们的值会被传递给函数 add 的形参 a 和 b。
形参和实参的关系
形参和实参之间存在着密切的关系。当函数被调用时,实参的值会被复制到对应的形参中,这个过程被称为“参数传递”。C语言中的参数传递采用“值传递”的方式,这意味着函数接收的是实参值的副本,而不是实参本身。
为了更好地理解这个概念,让我们看一个稍微复杂一点的例子:
#include <stdio.h> void swap(int x, int y) { int temp = x; x = y; y = temp; printf("在 swap 函数内:x = %d, y = %d\n", x, y); } int main() { int a = 10, b = 20; printf("交换前:a = %d, b = %d\n", a, b); swap(a, b); printf("交换后:a = %d, b = %d\n", a, b); return 0; }
这个程序的输出结果如下:
交换前:a = 10, b = 20 在 swap 函数内:x = 20, y = 10 交换后:a = 10, b = 20
从输出结果我们可以看到,虽然在 swap 函数内部 x 和 y 的值发生了交换,但是主函数中的 a 和 b 的值并没有改变。这是因为 swap 函数接收的是 a 和 b 的值的副本,而不是 a 和 b 本身。
小结
形参是函数定义中的占位符,用于接收实参的值。实参是函数调用时传递的实际值。
声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。