Domanda su puntatori e array...

di il
2 risposte

Domanda su puntatori e array...

Perché la funzione sizeof(...) riferita ad puntatore con una certa dimensione restituisce un valore diverso (e inferiore) rispetto alla stessa funzione riferita ad un array analogo? Faccio un esempio:

char *array;
array=(char*)malloc(100*sizeof(int)); //ottengo un'array con 100 posti di tipo char
printf("%d",sizeof(array)); //stampa "4"

se invece scrivo un codice equivalente:

char array[100]; //ottengo un'array con 100 posti di tipo char
printf("%d",sizeof(array)); //MI STAMPA "100"

Perche questa differenza? Non dovrebbero stampare lo stesso valore?

2 Risposte

  • Re: Domanda su puntatori e array...

    Char *array è un puntatore, la dimensione di un puntatore è 4 byte su sistemi a 32bit.
    char array[100] sono 100 caratteri. la dimensione di un carattere è definizione uguale a 1 da cui ottieni 100.
    questo invece è sbagliato
    array=(char*)malloc(100*sizeof(int));
    chiedi 100 interi e li assegni a un puntatore a char.
  • Re: Domanda su puntatori e array...

    Ma gli array non sono dei puntatori?
Devi accedere o registrarti per scrivere nel forum
2 risposte