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

Bal*_*ala 12 c++ arrays

您好我是c ​​++的初学者,有人可以向我解释一下

char a[]="Hello";

char b[]=a; // is not legal 
Run Code Online (Sandbox Code Playgroud)

然而,

char a[]="Hello";

char* b=a; // is legal 
Run Code Online (Sandbox Code Playgroud)

如果无法将数组复制或分配给另一个数组,为什么它可以作为参数传递,其中传递的值的副本始终在方法中进行

void copy(char[] a){....}

char[] a="Hello";

copy(a);
Run Code Online (Sandbox Code Playgroud)

kir*_*sos 11

它没有复制数组; 它把它变成指针.如果你修改它,你会亲眼看到:

void f(int x[]) { x[0]=7; }
...
int tst[] = {1,2,3};
f(tst); // tst[0] now equals 7
Run Code Online (Sandbox Code Playgroud)

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

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

如果你发现自己这样做,你可能想要使用std::array.


vso*_*tco 7

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