Rookie C++ avec le Code question.Using: Blocs 16,01 compilateur GNU GCC. Merci d'avance. Code;C++ Char comportement pointeur Array vs pointeur de chaîne Array
#include <iostream>
using namespace std;
int main(){
char charArr[]="Hello";
cout<<charArr<<endl; //outputs Hello.
string strArr[]={"Hello", "Stack", "overflow"};
string *pStrArr=strArr; //pointer to strArr; same as &strArr[0].
cout<<*pStrArr<<endl; //Derreferencing pointer , outputs Hello
char charArr1[]="Hello";
char *pCharArr1=charArr1; /*pointer to charArr1.(charArr cout was Hello, not H, therefore i assumed we are storing in memory Hello);*/
cout<<*pCharArr1<<endl; /*dereferencing, outputs H, not Hello as i expected. */
return 0;
}
Observation; sorties de charArr Bonjour, donc j'ai supposé que créer un pointeur et le déréférencer devrait produire le bonjour; La sortie réelle est H, ce qui semble incompatible avec le comportement observé sur une chaîne de caractères, alors que le premier élément est à la fois pointé et déréférencé.
Question est: Il est clair que je suis à défaut de comprendre tableau de caractères. J'apprécierais une explication de ce qui précède dans (autant que possible) des termes simples.
PS: a bien utilisé la fonction de recherche et a parlé du canard. Merci pour votre temps. +++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++ une fois que toutes les réponses que je me rends compte de la question réelle devrait être pourquoi les lignes 2 et 4 produisent des sorties différentes, strArr étant une adresse mémoire (se comporte comme un pointeur) tandis que le charArr affiche le contenu du tableau.
string strArr[]= {"hello","world","how", "are","you"};
cout<<strArr<<endl;//outputs 0x28fedc.
char charArr[]="Hello";
cout<<charArr<<endl; // outputs hello
Merci
Vous semblez conscient du fait que 'char * pCharArr1 = charArr1,' dans 'pCharArr1' égal' & charArr1 [0] '. Par conséquent, '* pCharArr1' est équivalent à' charArr1 [0] '- un seul caractère. Si vous imprimez 'cout << charArr1 [0]', vous verrez également un seul caractère 'H'. Je ne sais pas pourquoi vous êtes surpris par le comportement. –
N'utilisez pas de tableaux raw frickin '! _ "PS: a utilisé la fonction de recherche et a parlé au canard Merci pour votre temps." _ Parlez à votre canard plus loin! – user0042
Vous avez besoin d'un [bon livre C++] (https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) –