sizeof operador (C)
O sizeof operador fornece a quantidade de armazenamento, em bytes, necessários para armazenar um objeto do tipo do operando.Este operador permite que você evite especificar tamanhos de dados de máquina dependentes em seus programas.
sizeof unary-expression
sizeof ( type-name )
Comentários
O operando é tanto um identificador que seja um Unário-expressão, ou uma expressão de conversão de tipo (ou seja, um especificador de tipo entre parênteses).O Unário-expressão não pode representar um objeto de campo de bit, um tipo incompleto ou um designador de função.O resultado é uma constante de inteiro não assinada.O cabeçalho padrão STDDEF.H define este tipo como size_t.
Quando você aplica a sizeof o operador em um identificador de matriz, o resultado é o tamanho da matriz inteira em vez do tamanho do ponteiro representado pelo identificador de matriz.
Quando você aplica a sizeof para uma estrutura ou o nome do tipo de união ou para um identificador de tipo de união ou de estrutura de operador, o resultado é o número de bytes na estrutura ou união, incluindo o preenchimento interno e à direita.Esse tamanho pode incluir o enchimento interno e à direita, usado para alinhar os membros da estrutura ou união em limites de memória.Assim, o resultado pode não corresponder ao tamanho calculado Somando-se os requisitos de armazenamento dos membros individuais.
Se uma matriz de dimensões indefinida é o último elemento de uma estrutura, o sizeof o operador retorna o tamanho da estrutura sem a matriz.
buffer = calloc(100, sizeof (int) );
Este exemplo usa a sizeof operador para passar o tamanho de um int, que varia entre máquinas, como um argumento para uma função de tempo de execução chamado calloc.O valor retornado pela função é armazenado em 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] );
Neste exemplo, strings é uma matriz de ponteiros para char.O número de ponteiros é o número de elementos na matriz, mas não for especificado.É fácil determinar o número de ponteiros, usando o sizeof operador para calcular o número de elementos na matriz.O const valor inteiro string_no é inicializado para esse número.Porque é um const valor, string_no não pode ser modificado.