C_facile : Introduction au langage C
Cours

La fonction "sizeof" du compilateur

Nous introduisons la fonction « sizeof » pour illustrer les notions de taille de réceptacle pour les données. « sizeof » attend comme argument un type et il renvoie le nombre d'octets nécessaire pour le coder dans la mémoire, c'est-à-dire la taille d'un réceptacle de ce type.

On peut remarquer ainsi que la taille d'une donnée de type « pointeur vers » est identique quel que soit le type simple pointé.

Le programme C suivant affiche la taille de chaque type simple. Copiez-le et compilez.

#include <stdio.h> void main()

{

printf("\n %d octets pour variable de type char ",sizeof(char));

printf("\n %d octets pour variable de type unsigned char ",sizeof(unsigned char));

printf("\n %d octets pour variable de type short_int ",sizeof(short int));

printf("\n %d octets pour variable de type int ",sizeof(int));

printf("\n %d octets pour variable de type long int ",sizeof(long int));

printf("\n %d octets pour variable de type float ",sizeof(float));

printf("\n %d octets pour variable de type double ",sizeof(double));

printf("\n %d octets pour adresse vers variable de type char ",sizeof(char * ));

printf("\n %d octets pour adresse vers variable de type unsigned char ",sizeof(unsigned char * ));

printf("\n %d octets pour adresse vers variable de type short_int ",sizeof(short int * ));

printf("\n %d octets pour adresse vers variable de type int ",sizeof(int *));

printf("\n %d octets pour adresse vers variable de type long int ",sizeof(long int *));

printf("\n %d octets pour adresse vers variable de type float ",sizeof(float *));

printf("\n %d octets pour adresse vers variable de type double ",sizeof(double *));

printf("\n");

}

Un exemple d'affichage obtenu après exécution du code

1 octets pour variable de type char

1 octets pour variable de type unsigned char

2 octets pour variable de type short_int

4 octets pour variable de type int

4 octets pour variable de type long int

4 octets pour variable de type float

8 octets pour variable de type double

4 octets pour adresse vers variable de type char

4 octets pour adresse vers variable de type unsigned char

4 octets pour adresse vers variable de type short_int

4 octets pour adresse vers variable de type int

4 octets pour adresse vers variable de type long int

4 octets pour adresse vers variable de type float

4 octets pour adresse vers variable de type double

A l'exécution vous obtiendrez les tailles des types simples correspondant à votre ordinateur. Vous remarquerez qu'un pointeur est codé sur le même nombre d'octets quelque soit le type de données vers lequel il pointe.

Vous remarquerez que si vous demandez la taille d'une donnée de type « void * », vous obtenez 4.

C'est la taille d'une donnée de type adresse mémoire (pointeur vers un octet).

Les constituants élémentaires du langage C (page suivante)Constantes (page Précédente)
AccueilImprimer creativecommons : by-nc-ndRéalisé avec SCENARI