Ciao a Tutti, spero di trovare qualche buon cuore con competenze di C a sufficienza da spiegarmi questa cosa.
Per spiegare il mio dubbio ho creato questo codice:
Che da in output la seguente:
Come vedete, la copia puntatore avviene correttamente, infatti l'indirizzo è lo stesso. Ma il sizeof è sbagliato in entrambi (dovrebbero essere 9 caratteri per stringa più il terminatore, quindi 30 se non ho capito male). Ma ciò che capisco ancora di meno è il perché sono diversi tra loro (global e local).
Grazie in anticipo a chiunque vorrà spiegarmi questa cosa.
Per spiegare il mio dubbio ho creato questo codice:
Codice:
#include <stdio.h>
char* global[] = { "123456789", "abcdefghi", "987654321" };
int main()
{
char ** local;
local = global;
printf("local pointer: %d\n", local);
printf("sizeof local: %d\n", sizeof(local));
printf("global pointer: %d\n", global);
printf("sizeof global: %d\n", sizeof(global));
return 0;
}
Che da in output la seguente:
local pointer: 6295616
sizeof local: 8
global pointer: 6295616
sizeof global: 24
Come vedete, la copia puntatore avviene correttamente, infatti l'indirizzo è lo stesso. Ma il sizeof è sbagliato in entrambi (dovrebbero essere 9 caratteri per stringa più il terminatore, quindi 30 se non ho capito male). Ma ciò che capisco ancora di meno è il perché sono diversi tra loro (global e local).
Grazie in anticipo a chiunque vorrà spiegarmi questa cosa.