O operador sizeof é usado para se saber o tamanho de variáveis ou de tipos. Ele retorna o tamanho do tipo ou variável em bytes. Mas porque usá-lo se sabemos, por exemplo, que um inteiro ocupa 2 bytes? Devemos usá-lo para garantir portabilidade. O tamanho de um inteiro pode depender do sistema para o qual se está compilando. O sizeof é chamado um operador porque ele é substituído pelo tamanho do tipo ou variável no momento da compilação. Ele não é uma função. O sizeof admite duas formas:
sizeof nome_da_variável
sizeof (nome_do_tipo)
Se quisermos então saber o tamanho de um float fazemos sizeof(float). Se
declararmos a variável f como float e quisermos saber o seu tamanho faremos
sizeof f. O operador sizeof também funciona com estruturas, campos bit,
uniões e enumerações.
Outra aplicação importante do operador sizeof é para se saber o tamanho de tipos
definidos pelo usuário. Seria, por exemplo, uma tarefa um tanto complicada a de alocar a
memória para um ponteiro para a estrutura ficha_pessoal, criada na primeira página desta aula, se não fosse o uso de sizeof.
Veja o exemplo:
#include <stdio.h>
struct tipo_endereco
{
char rua [50];
int numero;
char bairro [20];
char cidade [30];
char sigla_estado [3];
long int CEP;
};
struct ficha_pessoal
{
char nome [50];
long int telefone;
struct tipo_endereco endereco;
};
void main(void)
{
struct ficha_pessoal *ex;
ex = (struct ficha_pessoal *) malloc(sizeof(struct ficha_pessoal));
...
free(ex);
}
Curso de C do CPDEE/UFMG - 1996 - 1999