在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
函数,它有两个参数,a
和 b
。在 main
函数中,我们声明了两个整型变量 x
和 y
,然后通过调用 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
运算符获取的只是指针占用内存大小。
因此,本示例说明了数组作为参数时常用的传递方式,即传递数组名,其实是传递了数组的地址,不同的概念在使用时要有明确的区分。