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);
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
.
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.