English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Corso di base del linguaggio C

Controllo di flusso del linguaggio C

Funzione del linguaggio C

Array del linguaggio C

Puntatore del linguaggio C

Stringa del linguaggio C

Struttura del linguaggio C

File del linguaggio C

C altre

Manuale di riferimento del linguaggio C

Operatore sizeof() del linguaggio C

L'operatore sizeof() nel linguaggio C determina la dimensione di un'espressione o il numero di unità di memoria di grandezza char specificato per un tipo di dati. L'operatore sizeof() contiene un operando che può essere un'espressione o una conversione di tipo di dati, dove la conversione è racchiusa tra parentesi. Il tipo di dati può essere sia un tipo di dati di base (come i tipi di dati interi o i tipi di dati floating-point) sia un tipo di dati puntatore e un tipo di dati complesso (come unioni e strutture).

Il ruolo dell'operatore sizeof()

Il programma deve sapere la dimensione di archiviazione del tipo di dati originale. Anche se la dimensione di archiviazione del tipo di dati è costante, essa può variare a seconda della piattaforma di implementazione. Ad esempio, possiamo usare l'operatore sizeof() per allocare spazio per un array dinamicamente:

int *ptr = malloc(10 * sizeof(int));

Nell'esempio sopra, abbiamo usato l'operatore sizeof(), applicato alla conversione di tipo int. Usiamomalloc()La funzione assegna memoria e restituisce un puntatore all'indirizzo della memoria allocata. Lo spazio in memoria è uguale al numero di byte utilizzati dal tipo di dati int moltiplicato per 10.

Attenzione:L'output può variare su diversi sistemi operativi, ad esempio, su un sistema operativo a 32 bit viene visualizzato un output diverso, mentre su un sistema operativo a 64 bit viene visualizzato un output diverso per lo stesso tipo di dati.

Il comportamento dell'operatore sizeof() varia a seconda del tipo dell'operando.

  • L'operando può essere un tipo di dati

  • L'operando può essere un'espressione

Quando l'operando è un tipo di dati.

#include <stdio.h>
int main()
{
    int x = 89; // Dichiarazione della variabile
    printf("La dimensione della variabile x è %d", sizeof(x)); //Mostra la dimensione della variabile x
    printf("\nLa dimensione del tipo di dati integer è %d", sizeof(int)); //Mostra la dimensione del tipo di dati integer.
    printf("\nLa dimensione del tipo di dati character è %d", sizeof(char)); //Mostra la dimensione del tipo di dati character
    printf("\nLa dimensione del tipo di dati floating point è %d", sizeof(float)); //Mostra la dimensione del tipo di dati floating point.
return 0;
}

Nell'esempio sopra, abbiamo usatosizeof()l'operatore per stampare diversi tipi di dati (come int, char, float )diDimensione.

Risultato di output

La dimensione della variabile x è 4
La dimensione del tipo di dati integer è 4
La dimensione del tipo di dati character è 1
La dimensione del tipo di dati floating point è 4

Quando l'operando è un'espressione

#include <stdio.h>
int main()
{
  double i = 78.0; //Inizializzazione della variabile.
  float j = 6.78; //Inizializzazione della variabile.
  printf("(i+j) la dimensione dell'espressione è: %d", sizeof(i+j)); //Mostra la dimensione dell'espressione (i + j).
  return 0;
}

Nell'esempio di codice sopra, abbiamo creato due variabili di tipo double e float denominate 'i' e 'j', poi abbiamo utilizzatosizeof(i + j)Stampa l'espressione dell'operatoreDimensione.

Risultato di output

La dimensione dell'espressione (i+j) è: 8