Svolgo i due esercizi per passi, così capisci
1)
codice:
char *names[]={ "Ron", "Fred", "George",
"Ginny", "Arthur", "Molly"};
char **a, **b, *c;
a=names; //a Punta alla R di RON
b=a++; // B punta alla R di RON, A punta alla O di Ron perché incrementa
c=*(++b); // C punta a RON, b punta alla O di Ron perché incrementa
printf( "Prima stampa: %s\n", c+2 ); //Stampa GEORGE
printf( "Seconda stampa: %s\n", c=b[3]+1 ); //b[3] non esiste
printf( "Terza stamnpa: %s\n", b[(b-a)+2]); //b[2] non esiste
}
Risultato: Non mi viene!
codice:
#include <stdio.h>
main()
{
char *citta[]={Parigi, Londra, Amsterdam, Torino,
Milano, Roma, Stoccolma};
char **a, *b;
int i=3;
a=&citta[i--]; //A punta alla A di Amsterdam, i=2
b=a[1]+i; // B punta alla T di Amsterdam
printf( Prima stampa: %s\n, b); //terdam
printf( Seconda stampa: %s\n, *++a); //boh?
b=a[--i]+3; //boh?
printf( Terza stampa: %s\n, b ); //boh?
}
Come vedi non capisco quando il puntatore di puntatore si sposta all'elemento successivo e quando invece di lettera