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

时间:2014-05-24 23:36:17

标签: c++ arrays

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

char a[]="Hello";

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

而,

char a[]="Hello";

char* b=a; // is legal 

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

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

char[] a="Hello";

copy(a);

2 个答案:

答案 0 :(得分:10)

它不是复制数组;它把它变成指针。如果你修改它,你会亲眼看到:

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

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

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

如果您发现自己这样做,可能需要使用std::array

答案 1 :(得分:2)

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