Also, ich spielte mit C-Zeiger und Zeigerarithmetik, da ich mich nicht ganz mit ihnen wohl fühlen. Ich habe diesen Code entwickelt.In Bezug auf Doppel-und Dreifachzeiger/Doppel-Dimension-Arrays
char* a[5] = { "Hi", "My", "Name", "Is" , "Dennis"};
char** aPtr = a; // This is acceptable because 'a' is double pointer
char*** aPtr2 = &aPtr; // This is also acceptable because they are triple pointers
//char ***aPtr2 = &a // This is not acceptable according to gcc 4.8.3, why ?
//This is the rest of the code, the side notes are only for checking
printf("%s\n",a[0]); //Prints Hi
printf("%s\n",a[1]); //Prints My
printf("%s\n",a[2]); //Prints Name
printf("%s\n",a[3]); //Prints Is
printf("%s\n",a[4]); //Prints Dennis
printf("%s\n",*(a+0)); //Prints Hi
printf("%s\n",*(a+1)); //Prints My
printf("%s\n",*(a+2)); //Prints Name
printf("%s\n",*(a+3)); //Prints Is
printf("%s\n",*(a+4)); //Prints Dennis
printf("%s\n",*(*(aPtr2) +0)); //Prints Hi
printf("%s\n",*(*(aPtr2) +1)); //Prints My // ap = a, *ap = *a, *(ap)+1 = *a+1 ?
printf("%s\n",*(*(aPtr2) +2)); //Prints Name
printf("%s\n",*(*(aPtr2) +3)); //Prints Is
printf("%s\n",*(*(aPtr2) +4)); //Prints Dennis
char*** aPtr2 = &a
ist nicht akzeptabel, nach gcc 4.8.3, warum?
Leider vergessen haben, Compiler-Warnung hinzuzufügen:
Warnung: Initialisierung von inkompatiblen Zeigertyp [standardmäßig aktiviert]
Es ist vielleicht nicht klar, was ich versuche zu sagen, also musste ich Fügen Sie diese Links hinzu:
- Dies ist der Code, der funktioniert: http://ideone.com/4ePj4h. (Zeile 7. auskommentiert)
- Dies ist der Code, der nicht funktioniert: http://ideone.com/KMG7OS. (Zeile 6 auskommentiert)
Beachten Sie die auskommentierten Zeilen.
Mit "nicht akzeptabel", was meinst du? Bitte fügen Sie die Warnung oder Fehlermeldung hinzu. –
Bist du sicher, dass es kaputt geht? http://ideone.com/KM516t (Beachten Sie, dass Sie ein Semikolon verpassen und den Namen 'aPtr2' wiederverwenden) – mtijanic
Der 'ideone'-Link, den ich gepostet habe, kompiliert ihn für gcc-4.9.2. Welche Compiler-Flags verwenden Sie? – mtijanic