Quindi, stavo giocando con i puntatori C e l'aritmetica dei puntatori poiché non sono del tutto a loro agio con loro. Mi sono inventato questo codice.Riguardanti i puntatori a doppio e triplo/array a doppia dimensione
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
non è accettabile secondo gcc 4.8.3, perché?
dispiace dimenticato di aggiungere avviso del compilatore:
avvertimento: l'inizializzazione dal tipo di puntatore incompatibili [abilitato per impostazione predefinita]
E 'forse poco chiaro quello che sto cercando di dire, così ho dovuto aggiungi questo link:
- Questo è il codice che funziona: http://ideone.com/4ePj4h. (riga 7. commentato)
- Questo è il codice che non funziona: http://ideone.com/KMG7OS. (riga 6. commentato)
Notare le righe commentate.
Per "non accettabile", cosa intendi? Si prega di includere l'avviso o il messaggio di errore. –
Sei sicuro che si rompa? http://ideone.com/KM516t (Si noti che manca un punto e virgola e si sta riutilizzando il nome 'aPtr2') – mtijanic
Il link' ideone' che ho postato lo ha compilato bene per gcc-4.9.2. Quali flag del compilatore stai usando? – mtijanic