Compartilhar via


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]

Consulte também

Referência

Expressões com operadores unários

Palavras-chave C++