Ma compréhension de l'affectation d'un tableau à un pointeur est que le pointeur pointe sur le premier index du tableau, donc lors de l'impression du pointeur, il devrait imprimer l'adresse du premier index du tableau, mais comment dans ce cas le cout a imprimé la valeur de tout le tableau? même si je explicitement indiqué que je voulais l'adresse du premier indicepointeur vers tableau C++
char foo[] = {'A','B','C','\0'};
char* p = foo;
char* q = &(foo[0]);
cout <<"from p: " << p << endl;
cout << "from q: " << q << " " << &(foo[0]) << endl;
//output
from p: ABC
from q: ABC ABC
la deuxième question est que je vois la différence entre ces deux lignes est que l'on est un tableau de pointeur vers un char, l'autre est un pointeur à un tableau char, est-ce correct? la parenthèse est-elle nécessaire?
char* bar1[4];
char (*bar2)[4] = &foo;
cout << "address of foo is " << bar2 << endl;
//output
address of foo is 0x7fff192f88b0
L'adresse du tableau de foo devrait être la même que l'adresse de A, non? Comment imprimer l'adresse de A? puisque je n'ai pas réussi à le faire. Merci beaucoup
Merci, et si j'ai changé le *** foo *** en *** foo = {'A', 'B', 'C'} *** sans le terminateur nul , il devrait être traité comme un tableau char au lieu de C-string à droite? –
@ClintHui: Non, car le contenu n'affecte pas le type. –
donc il n'y a pas de tableau char en C++, tout sera traité comme C-String? Merci –