Operatore sizeof
Restituisce le dimensioni dell'operando rispetto alle dimensioni di tipo char
.
Nota
Per informazioni sull'operatore sizeof ...
, vedere Puntini di sospensione e modelli variadic.
Sintassi
sizeof unary-expression
sizeof ( type-name )
Osservazioni:
Il risultato dell'operatore sizeof
è di tipo size_t
, un tipo integrale definito nel file <di inclusione stddef.h>. Tale operatore consente di evitare di specificare le dimensioni dei dati dipendenti dal computer nei programmi.
L'operando da sizeof
può essere uno dei seguenti:
Un nome di tipo. Per usare
sizeof
con un nome di tipo, il nome deve essere racchiuso tra parentesi.Espressione. Se usato con un'espressione,
sizeof
può essere specificato con o senza parentesi. L'espressione non viene valutata.
Quando l'operatore sizeof
viene applicato a un oggetto di tipo char
, restituisce 1. Quando l'operatore sizeof
viene applicato a una matrice, restituisce il numero totale di byte in tale matrice, non le dimensioni del puntatore rappresentato dall'identificatore di matrice. Per ottenere le dimensioni del puntatore rappresentato dall'identificatore di matrice, passarlo come parametro a una funzione che usa sizeof
. Ad esempio:
Esempio
#include <iostream>
using namespace std;
size_t getPtrSize( char *ptr )
{
return sizeof( ptr );
}
int main()
{
char szHello[] = "Hello, world!";
cout << "The size of a char is: "
<< sizeof( char )
<< "\nThe length of " << szHello << " is: "
<< sizeof szHello
<< "\nThe size of the pointer is "
<< getPtrSize( szHello ) << endl;
}
Output di esempio
The size of a char is: 1
The length of Hello, world! is: 14
The size of the pointer is 4
Quando l'operatore sizeof
viene applicato a un class
tipo , struct
o union
, il risultato è il numero di byte in un oggetto di tale tipo, oltre a qualsiasi spaziatura interna aggiunta per allineare i membri ai limiti delle parole. Il risultato non corrisponde necessariamente alla dimensione calcolata sommando i requisiti di archiviazione dei singoli membri. L'opzione del compilatore /Zp e il pragma pack influiscono sui limiti di allineamento per i membri.
L'operatore sizeof
non restituisce mai 0, anche per una classe vuota.
L'operatore sizeof
non può essere usato con gli operandi seguenti:
Funzioni. Tuttavia,
sizeof
può essere applicato ai puntatori alle funzioni.Campi di bit.
Classi non definite.
Tipo
void
.Matrici allocate in modo dinamico.
Matrici esterne.
Tipi incompleti.
Nomi tra parentesi di tipi incompleti.
Quando l'operatore sizeof
viene applicato a un riferimento, il risultato corrisponde a se sizeof
fosse stato applicato all'oggetto stesso.
Se una matrice non dimensionata è l'ultimo elemento di una struttura, l'operatore sizeof
restituisce le dimensioni della struttura senza la matrice.
L'operatore sizeof
viene spesso usato per calcolare il numero di elementi in una matrice usando un'espressione del form:
sizeof array / sizeof array[0]
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per