Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Ger storleken på dess operande med avseende på storleken på typen char.
Anmärkning
Information om operatorn finns i sizeof ...Ellips- och variadic-mallar.
Syntax
sizeof unary-expression
sizeof ( type-name )
Anmärkningar
Resultatet av operatorn sizeof är av typen size_t, en integrerad typ som definierats i inkluderingsfilen <stddef.h>. Med den här operatorn kan du undvika att ange datorberoende datastorlekar i dina program.
Operand till sizeof kan vara något av följande:
Ett typnamn. Om du vill använda
sizeofmed ett typnamn måste namnet omges av parenteser.Ett uttryck. När det används med ett uttryck
sizeofkan anges med eller utan parenteser. Uttrycket utvärderas inte.
När operatorn sizeof tillämpas på ett objekt av typen charger den 1. När operatorn sizeof tillämpas på en matris ger den det totala antalet byte i matrisen, inte storleken på pekaren som representeras av matrisidentifieraren. Om du vill hämta storleken på pekaren som representeras av matrisidentifieraren skickar du den som en parameter till en funktion som använder sizeof. Till exempel:
Exempel
#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;
}
Exempelutdata
The size of a char is: 1
The length of Hello, world! is: 14
The size of the pointer is 4
När operatorn sizeof tillämpas på en class, struct, eller union -typ blir resultatet antalet byte i ett objekt av den typen, plus eventuell utfyllnad som läggs till för att justera medlemmar på ordgränser. Resultatet motsvarar inte nödvändigtvis den storlek som beräknas genom att lägga till de enskilda medlemmarnas lagringskrav. Kompilatoralternativet /Zp och pack-pragma påverkar justeringsgränserna för medlemmar.
Operatorn sizeof ger aldrig 0, inte ens för en tom klass.
Operatorn sizeof kan inte användas med följande operander:
Funktioner. (Kan dock
sizeofanvändas för pekare på funktioner.)Bitfält.
Odefinierade klasser.
Typen
void.Dynamiskt allokerade matriser.
Externa matriser.
Ofullständiga typer.
Parenteserade namn på ofullständiga typer.
När operatorn sizeof tillämpas på en referens blir resultatet detsamma som om sizeof det hade tillämpats på själva objektet.
Om en icke-anpassad matris är det sista elementet i en struktur returnerar operatorn sizeof strukturens storlek utan matrisen.
Operatorn sizeof används ofta för att beräkna antalet element i en matris med hjälp av ett uttryck i formuläret:
sizeof array / sizeof array[0]