Ciao a tutti!
Siccome presto avrò un esame sul C, guardavo i vecchi compiti e ho trovato una tipologia d'esercizio che mi dà qualche problema. Vi scrivo qui sotto due testi di quel tipo, se possibile potreste aiutarmi a capire come si arriva a quei risultati?
1)
Cosa stampa il seguente programma:
Prima stampa: edcodice:main() { char *names[]={ "Ron", "Fred", "George", "Ginny", "Arthur", "Molly"}; char **a, **b, *c; a=names; b=a++; c=*(++b); printf( "Prima stampa: %s\n", c+2 ); printf( "Seconda stampa: %s\n", c=b[3]+1 ); printf( "Terza stamnpa: %s\n", b[(b-a)+2]); }
Seconda stampa: rthur
Terza stamnpa: Ginny
2)Cosa stampa il seguente programma:
Prima stampa: lanocodice:#include <stdio.h> main() { char *citta[]={Parigi, Londra, Amsterdam, Torino, Milano, Roma, Stoccolma}; char **a, *b; int i=3; a=&citta[i--]; b=a[1]+i; printf( Prima stampa: %s\n, b); printf( Seconda stampa: %s\n, *++a); b=a[--i]+3; printf( Terza stampa: %s\n, b ); }
Seconda stampa: Milano
Terza stampa: a
La cosa che non mi è del tutto chiara è come mai a volte il puntatore (o puntatore di puntatore) punta ad un carattere o all'elemento successivo!![]()
Grazie in anticipo!![]()

Rispondi quotando