sizeof
, opérateur
Donne la taille de son opérande par rapport à la taille du type char
.
Remarque
Pour plus d’informations sur l’opérateur sizeof ...
, consultez Points de suspension et modèles variadiques.
Syntaxe
sizeof unary-expression
sizeof ( type-name )
Notes
Le résultat de l’opérateur sizeof
est de type size_t
, un type intégral défini dans le fichier include <stddef.h>. Cet opérateur vous permet d'éviter de spécifier les tailles de données dépendantes de l'ordinateur dans vos programmes.
L’opérande pour sizeof
peut être un des suivants :
Un nom de type. Pour utiliser
sizeof
avec un nom de type, le nom doit être placé entre des parenthèses.Expression. Quand il est utilisé avec une expression,
sizeof
peut être spécifié avec ou sans les parenthèses. L'expression n'est pas évaluée.
Quand l’opérateur sizeof
est appliqué à un objet de type char
, il donne comme résultat 1. Quand l’opérateur sizeof
est appliqué à un tableau, il donne le nombre total d’octets dans ce tableau, et non pas la taille du pointeur représenté par l’identificateur du tableau. Pour obtenir la taille du pointeur représenté par l’identificateur du tableau, passez-le comme paramètre à une fonction qui utilise sizeof
. Par exemple :
Exemple
#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;
}
Exemple de sortie
The size of a char is: 1
The length of Hello, world! is: 14
The size of the pointer is 4
Quand l’opérateur sizeof
est appliqué à un type class
, struct
ou union
, le résultat est le nombre d’octets dans un objet de ce type, plus l’éventuel remplissage ajouté pour aligner les membres sur les limites des mots. Le résultat ne correspond pas forcément à la taille calculée en additionnant les exigences en matière de stockage des membres individuels. L’option de compilateur /Zp et le pragma pack affectent les limites d’alignement pour les membres.
L’opérateur sizeof
ne donne jamais 0, même pour une classe vide.
L’opérateur sizeof
ne peut pas être utilisé avec les opérandes suivants :
Fonctions. (Cependant,
sizeof
peut être appliqué aux pointeurs vers des fonctions.)Champ de bits.
Classes indéfinies.
Le type
void
.Tableaux alloués de manière dynamique.
Tableaux externes.
Types incomplets.
Noms entre parenthèses de types incomplets.
Quand l’opérateur sizeof
est appliqué à une référence, le résultat est le même que si sizeof
avait été appliqué à l’objet lui-même.
Si un tableau non dimensionné est le dernier élément d'une structure, l'opérateur sizeof
retourne la taille de la structure sans le tableau.
L’opérateur sizeof
est souvent utilisé pour calculer le nombre d’éléments dans un tableau en utilisant une expression de la forme :
sizeof array / sizeof array[0]
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour