Operador sizeof
Produz o tamanho do seu operando com relação ao tamanho do tipo char.
sizeof unary-expression
sizeof ( type-name )
Comentários
O resultado do sizeof operador é do tipo size_t, tipo integral é definido no arquivo de inclusão STDDEF.H.Este operador permite que você evite especificar tamanhos de dados de máquina dependentes em seus programas.
O operando em sizeof pode ser uma das seguintes opções:
Um nome de tipo.Para usar sizeof com um nome de tipo, o nome deve estar entre parênteses.
Uma expressão.Quando usado com uma expressão, sizeof podem ser especificados com ou sem os parênteses.A expressão não é avaliada.
Quando o sizeof operador é aplicado a um objeto do tipo char, ele produz 1.Quando o sizeof operador é aplicada a uma matriz, ele gera o número total de bytes dessa matriz, não o tamanho do ponteiro representado pelo identificador de matriz.Para obter o tamanho do ponteiro representado pelo identificador de matriz, passá-lo como um parâmetro para uma função que usa sizeof.Por exemplo:
Exemplo
// expre_sizeof_Operator.cpp
// compile with: /EHsc
#include <iostream>
size_t getPtrSize( char *ptr )
{
return sizeof( ptr );
}
using namespace std;
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;
}
Saída de exemplo
The size of a char is: 1
The length of Hello, world! is: 14
The size of the pointer is 4
Quando o sizeof operador é aplicado a uma classe, struct, ou união o tipo, o resultado é o número de bytes em um objeto desse tipo, além de qualquer preenchimento adicionado para alinhar os membros nos limites das palavras.O resultado não corresponde necessariamente ao tamanho calculado adicionando-se os requisitos de armazenamento dos membros individuais.O /Zp opção de compilador e o pack pragma afetam os limites de alinhamento para membros.
O sizeof operador nunca produz 0, mesmo para uma classe vazia.
O sizeof operador não pode ser usado com os operandos a seguintes:
Funções.(No entanto, sizeof podem ser aplicadas a ponteiros para funções.)
Campos de bits.
Classes indefinidas.
The type void.
Arrays alocados dinamicamente.
Arrays externos.
Tipos de incompletos.
Entre parênteses os nomes dos tipos incompletos.
Quando o sizeof operador é aplicado a uma referência, o resultado é o mesmo como se sizeof tivesse sido aplicada ao objeto propriamente dito.
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.
O sizeof operador é freqüentemente usado para calcular o número de elementos de uma matriz usando uma expressão do formulário:
sizeof array / sizeof array[0]