int main(int argc, char *argv[]) {
char** c1 = {"Hey","Hello"};
printf("%s",c1[1]);
} //error
Nel codice sopra, si sta tentando di impostare un puntatore a un puntatore su un insieme di due stringhe. Dov'è lo spazio di archiviazione per i due puntatori che contengono rispettivamente l'indirizzo "Hey" e "Hello"? Da nessuna parte.
si potrebbe fare:
char *a = "Hey";
char *b = "Hello";
char *c[] = { a, b }; // This MAY not compile due to a and b not being compile time constants.
char **c1 = c;
(ho dividerlo in più variabili individuali di cui ha bisogno in realtà, ma penso che spiega ciò che è "sbagliato" con il codice abbastanza chiaramente).
Un altro esempio potrebbe essere se cambiamo il char *
a int:
const int a = 1;
const int b = 2;
int c[] = { a, b };
int *c = { a, b }; // Doesn't work, there is nowhere to store a copy of a and b.
E 'la stessa cosa, se non con numeri interi.
fonte
2013-04-10 12:49:14
I puntatori non sono array. –