Taglia di è un operatore molto utilizzato in C. È un operatore unario in fase di compilazione che può essere utilizzato per calcolare il dimensione del suo operando . Il risultato di sizeof è del tipo integrale senza segno, solitamente indicato con size_t. sizeof può essere applicato a qualsiasi tipo di dati, inclusi tipi primitivi come tipi interi e a virgola mobile, tipi di puntatori o tipi di dati composti come struttura, unione, ecc.
Sintassi:
sizeof ( Expression );>
Dove ' Espressione ‘ può essere un tipo di dati o una variabile di qualsiasi tipo.
Ritorno: Restituisce la dimensione dell'espressione data.
Complessità temporale: O(1)
Spazio ausiliario: O(1)
Utilizzo dell'operatore sizeof()
taglia di() L'operatore viene utilizzato in modi diversi a seconda del tipo di operando.
1. Quando l'operando è un tipo di dati: Quando taglia di() viene utilizzato con tipi di dati come int, float, char... ecc. Restituisce semplicemente la quantità di memoria allocata a quei tipi di dati.
punto Java
Esempio:
C
// C Program To demonstrate> // sizeof operator> #include> int> main()> {> >printf>(>'%lu
'>,>sizeof>(>char>));> >printf>(>'%lu
'>,>sizeof>(>int>));> >printf>(>'%lu
'>,>sizeof>(>float>));> >printf>(>'%lu'>,>sizeof>(>double>));> >return> 0;> }> |
>
>Produzione
1 4 4 8>
Nota: sizeof() può fornire un output diverso a seconda della macchina, abbiamo eseguito il nostro programma su un compilatore gcc a 32 bit.
2. Quando l'operando è un'espressione: Quando taglia di() viene utilizzato con l'espressione, restituisce la dimensione dell'espressione.
Esempio:
C
// C Program To demonstrate> // operand as expression> #include> int> main()> {> >int> a = 0;> >double> d = 10.21;> >printf>(>'%lu'>,>sizeof>(a + d));> >return> 0;> }> |
>
>Produzione
8>
Come sappiamo dal primo caso, la dimensione di int e double è rispettivamente 4 e 8, a è una variabile int mentre d è una variabile double. Il risultato finale sarà doppio, quindi l'output del nostro programma è di 8 byte.
Tipo di operatore
sizeof() è un operatore in fase di compilazione. il tempo di compilazione si riferisce al momento in cui il codice sorgente viene convertito in un codice binario. Non esegue (esegue) il codice all'interno di ().
Esempio:
C
cos'è la gestione delle eccezioni in Java
// C Program to illustrate> // that the 'sizeof' operator> // is a 'compile time operator'> #include> int> main(>void>)> {> >int> y;> >int> x = 11;> >// value of x doesn't change> >y =>sizeof>(x++);> >// prints 4 and 11> >printf>(>'%i %i'>, y, x);> >return> (0);> }> |
>
>Produzione
4 11>
Se proviamo ad incrementare il valore di x, rimane lo stesso. Questo perché x viene incrementato all'interno delle parentesi e sizeof() è un operatore in fase di compilazione.
Necessità di dimensioni
1. Per scoprire il numero di elementi in un array: Sizeof può essere utilizzato per calcolare automaticamente il numero di elementi dell'array.
Esempio:
C
carattere in Java
// C Program> // demonstrate the method> // to find the number of elements> // in an array> #include> int> main()> {> >int> arr[] = { 1, 2, 3, 4, 7, 98, 0, 12, 35, 99, 14 };> >printf>(>'Number of elements:%lu '>,> >sizeof>(arr) />sizeof>(arr[0]));> >return> 0;> }> |
>
>Produzione
Number of elements:11>
2. Per allocare un blocco di memoria in modo dinamico: sizeof è molto utilizzato nell'allocazione dinamica della memoria. Ad esempio, se vogliamo allocare memoria sufficiente a contenere 10 numeri interi e non conosciamo la dimensione di (int) in quella particolare macchina. Possiamo allocare con l'aiuto di sizeof.
Sintassi:
int* ptr = (int*)malloc(10 * sizeof(int));>
Per ulteriori informazioni consultare l’articolo – Allocare un blocco di memoria in modo dinamico .