web-dev-qa-db-fra.com

Assigner un tableau à un autre tableau c ++

Bonjour je suis débutant en c ++, quelqu'un peut-il m'expliquer ceci

char a[]="Hello";

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

tandis que,

char a[]="Hello";

char* b=a; // is legal 

Si un tableau ne peut pas être copié ou assigné à un autre, pourquoi est-il possible de le transmettre en tant que paramètre, une copie de la valeur transmise étant toujours effectuée dans la méthode 

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

char[] a="Hello";

copy(a);
10
Bala

Ce n'est pas copier le tableau; il tourne à un pointeur. Si vous le modifiez, vous verrez par vous-même:

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

Si vous devez copier un tableau, utilisez std::copy :

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

Si vous vous trouvez dans cette situation, vous pouvez utiliser un std::array .

9
kirbyfan64sos

Le tableau est silencieusement (implicitement) converti en un pointeur dans la déclaration de fonction et le pointeur est copié. Bien sûr, le pointeur copié pointe au même emplacement que l'original, vous pouvez donc modifier les données du tableau d'origine via le pointeur copié dans votre fonction.

0
vsoftco