首页 > 编程笔记 > C语言笔记

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笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。