C++数组和方法

C++ array and method

本文关键字:方法 数组 C++      更新时间:2023-10-16

我需要解释这个

void m(int, int[]);
int main()
{
int x = 1;
int y[10];
y[0] = 1;
m (x, y)
cout >> x >> endl;
cout >> y >> endl;
return 0;
}
void m (int num, int nums[])
{
num = 100;
nums[0] = 1000;
}

x和y的输出是

x仍然是1,但y被替换为1000

我不知道为什么会发生这种事。

为什么整数数组y[0]被替换,而整数x仍然是1?

好的,让我们看看:

void m (int num, int nums[])
{
num = 100;
nums[0] = 1000;
}

(以下解释被简化。)可以看到num是一个简单的参数,因此它的value被赋予了函数,该函数实际上是原始变量的副本。这称为按值调用。无论您对函数中的变量做什么,它都只会修改本地副本,而不会修改原始变量中的变量。

nums变量tho用作参考。(请注意,在函数签名中,术语int nums[]等同于int* nums。)您不是给函数赋值(副本),而是以指针的形式提供引用。这就是为什么这被称为引用调用。如果您修改这个变量,原始值就会被修改(因为您只传递了指针(实际上它不是引用))。

为了获得更多信息,我建议你看一些C++书,因为这是一个非常基本的概念,如果你想继续(用C++)编程,你必须理解它。例如,一个起点是cplusplus.com。