Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De sizeof operator geeft de hoeveelheid opslagruimte in bytes die nodig is voor het opslaan van een object van het type operand. Met deze operator kunt u voorkomen dat machineafhankelijke gegevensgrootten in uw programma's worden opgegeven.
Syntaxis
sizeof unary-expression
sizeof ( type-name )
Opmerkingen
De operand is een id die een unaire expressie is of een type-cast-expressie (dat wil gezegd een typeaanduiding tussen haakjes). De unaire expressie kan geen bitveldobject, een onvolledig type of een functieontwerpfunctie vertegenwoordigen. Het resultaat is een niet-ondertekende integrale constante. De standaardheader STDDEF. H definieert dit type als size_t.
Wanneer u de sizeof operator toepast op een matrix-id, is het resultaat de grootte van de hele matrix in plaats van de grootte van de aanwijzer die wordt vertegenwoordigd door de matrix-id.
Wanneer u de sizeof operator toepast op een structuur- of samenvoegtypenaam, of op een id van het structuur- of samenvoegtype, is het resultaat het aantal bytes in de structuur of samenvoeging, inclusief interne en volgopvulling. Deze grootte kan interne en volgopvulling bevatten die wordt gebruikt om de leden van de structuur of samenvoeging op geheugengrenzen uit te lijnen. Het resultaat komt dus mogelijk niet overeen met de grootte die wordt berekend door de opslagvereisten van de afzonderlijke leden op te tellen.
Als een niet-gestandaardiseerde matrix het laatste element van een structuur is, retourneert de sizeof operator de grootte van de structuur zonder de matrix.
buffer = calloc(100, sizeof (int) );
In dit voorbeeld wordt de sizeof operator gebruikt om de grootte van een int, die varieert van machines, door te geven als argument voor een runtime-functie met de naam calloc. De waarde die door de functie wordt geretourneerd, wordt opgeslagen in buffer.
static char *strings[] = {
"this is string one",
"this is string two",
"this is string three",
};
const int string_no = ( sizeof strings ) / ( sizeof strings[0] );
In dit voorbeeld strings is een matrix met aanwijzers naar char. Het aantal aanwijzers is het aantal elementen in de matrix, maar is niet opgegeven. Het is eenvoudig om het aantal aanwijzers te bepalen door de sizeof operator te gebruiken om het aantal elementen in de matrix te berekenen. De const waarde string_no van het gehele getal wordt geïnitialiseerd voor dit getal. Omdat het een const waarde is, string_no kan niet worden gewijzigd.
Zie ook
C-operators
Ingebouwde C++-operators, prioriteit en associativiteit