将一个数组分配给另一个数组c ++

Assigning one array to another array c++

本问题已经有最佳答案,请猛点这里访问。

大家好,我是C++初学者,有人能给我解释一下吗?

1
2
3
char a[]="Hello";

char b[]=a; // is not legal

然而,

1
2
3
char a[]="Hello";

char* b=a; // is legal

如果一个数组不能被复制或分配给另一个数组,为什么它可以作为参数传递,而传递的值的副本总是在方法中生成

2


它没有复制数组,而是将其转换为指针。如果您修改它,您将亲自看到:

1
2
3
4
void f(int x[]) { x[0]=7; }
...
int tst[] = {1,2,3};
f(tst); // tst[0] now equals 7

如果需要复制数组,请使用std::copy

1
2
3
int a1[] = {1,2,3};
int a2[3];
std::copy(std::begin(a1), std::end(a1), std::begin(a2));

如果你发现自己这样做了,你可能会想使用一个std::array


该数组在函数声明中自动(隐式)转换为指针,并复制该指针。当然,复制的指针指向与原始指针相同的位置,因此可以通过函数中复制的指针修改原始数组中的数据。