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

c语言形参和实参的区别(附带完整示例)

在C语言中,形参(形式参数)和实参(实际参数)是函数调用过程中的重要概念,理解它们之间的区别和联系对于学习C语言至关重要。
 

形参是在函数定义时声明的参数,它们位于函数头部的括号内。这些参数在函数体内部使用,用于接收调用者传递的值。形参本质上是函数内部的局部变量,其作用域仅限于函数体内。
 

实参是在调用函数时传递给函数的实际值。这些值会被复制到对应的形参中,供函数使用。实参可以是常量、变量、表达式或者函数调用的结果。
 

让我们通过一个简单的例子来说明形参和实参的概念:

#include <stdio.h>

// 函数声明,x 和 y 是形参
int add(int x, int y) {
    return x + y;
}

int main() {
    int a = 5, b = 3;
    int result;
    
    // 函数调用,a 和 b 是实参
    result = add(a, b);
    
    printf("The sum of %d and %d is %d\n", a, b, result);
    
    return 0;
}

在这个例子中,add 函数的定义中 x 和 y 是形参,而在 main 函数中调用 add 函数时传递的 a 和 b 是实参。
 

形参和实参之间存在着密切的关系,但它们也有一些重要的区别:


让我们通过一个更复杂的例子来深入理解形参和实参的特性:

#include <stdio.h>

void modify(int x, int *y) {
    x = x + 10;
    *y = *y + 10;
    printf("Inside modify: x = %d, *y = %d\n", x, *y);
}

int main() {
    int a = 5, b = 7;
    printf("Before calling modify: a = %d, b = %d\n", a, b);
    
    modify(a, &b);
    
    printf("After calling modify: a = %d, b = %d\n", a, b);
    
    return 0;
}

在这个例子中,我们定义了一个 modify 函数,它接受一个整数 x 和一个整数指针 y 作为参数。函数试图修改这两个参数的值,让我们看看程序的输出结果:

Before calling modify: a = 5, b = 7
Inside modify: x = 15, *y = 17
After calling modify: a = 5, b = 17

从输出结果我们可以观察到:

这个例子展示了C语言中参数传递的两种常见方式:值传递和指针传递。值传递适用于我们只需要在函数内使用参数值的情况,而指针传递则允许我们在函数内部修改调用者的变量。
 

理解形参和实参的概念对于编写正确的 C 程序至关重要,它不仅涉及到函数的设计和使用,还与内存管理、程序效率和代码可读性密切相关。

相关文章