C C++中实参和参数的区别

  • Post category:C

在C和C++中,实参和参数是两个概念。

实参和参数的定义

  • 参数:函数定义时声明的变量,也称为形式参数或形参,是函数头部中的变量。
  • 实参:函数调用时传递给函数的值或变量,也被称为实际参数或实参,是函数调用中传递给函数的实际值。

总结来说,参数是在函数定义过程中形式上占位的变量,用于在函数内部接收传入的值,而实参则是函数调用时传递的具体值或者变量。

示例1:参数和实参的区别

#include <iostream>
using namespace std;

void func(int a, int b) {
    cout << "a: " << a << endl;
    cout << "b: " << b << endl;
}

int main() {
    int x = 10, y = 20;
    func(x, y);
    return 0;
}

输出:

a: 10
b: 20

在此示例中,我们定义了一个 func 函数,它有两个参数,ab。在 main 函数中,我们声明了两个整型变量 xy,然后通过调用 func(x, y) 函数来传入实参,并输出该函数头部中的两个参数。

通过这个示例程序,我们可以清楚地看到,参数是声明在函数头部中的变量名,而实参是在函数调用时传递给函数的具体值或者变量。在函数执行过程中,参数接收了实参的值,进而执行函数体内的操作。

示例2:数组作为参数和实参的区别

#include <iostream>
using namespace std;

void func(int a[]) {
    cout << "数组大小为: " << sizeof(a) << " 字节" << endl;
}

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    func(arr);
    return 0;
}

输出:

数组大小为: 8 字节

在此示例中,我们定义了一个 func 函数,它接受一个数组类型的参数 a,然后我们在 main 函数中声明了一个名为 arr 的整型数组,并将其作为实参传递给了 func 函数。

在函数 func 中,我们使用了 sizeof 运算符来获取传递的数组实参所占用的内存大小,输出了该值。 然而,当我们把数组作为参数传递给函数时,实际上是把数组的地址传递给了函数,所以函数内部通过参数所得到的只是一个地址,而不是实际的数组内容。因此,在函数内部使用 sizeof 运算符获取的只是指针占用内存大小。

因此,本示例说明了数组作为参数时常用的传递方式,即传递数组名,其实是传递了数组的地址,不同的概念在使用时要有明确的区分。