Operador sizeof
Retorna o tamanho do operando em relação ao tamanho do tipo char
.
Observação
Para obter informações sobre o operador sizeof ...
, consulte Reticências e modelos variádicos.
Sintaxe
sizeof unary-expression
sizeof ( type-name )
Comentários
O resultado do operador sizeof
é do tipo size_t
, um tipo integral definido no arquivo. <stddef.h> de inclusão. Esse operador permite que você evite especificar tamanhos de dados dependentes do computador em seus programas.
O operando para sizeof
pode ser um destes:
O nome de um tipo. Para usar
sizeof
com o nome de um tipo, o nome deve ser colocado entre parênteses.Uma expressão. Quando usado com uma expressão,
sizeof
pode ser especificado com ou sem parênteses. A expressão não é avaliada.
Quando o operador sizeof
é aplicado a um objeto do tipo char
, ele resulta em 1. Quando o operador sizeof
é aplicado a uma matriz, ele produz o número total de bytes na matriz, não o tamanho do ponteiro representado pelo identificador da matriz. Para obter o tamanho do ponteiro representado pelo identificador de matriz, transmita-o como um parâmetro para uma função que usa sizeof
. Por exemplo:
Exemplo
#include <iostream>
using namespace std;
size_t getPtrSize( char *ptr )
{
return sizeof( ptr );
}
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 operador sizeof
é aplicado a um tipo class
, struct
ou union
, o resultado é o número de bytes em um objeto desse tipo, mais todos os preenchimentos adicionados para alinhar os membros em limites de palavras. O resultado não corresponde necessariamente ao tamanho calculado pela adição dos requisitos de armazenamento dos membros individuais. A opção de compilador /Zp e o pragma de pacote afetam os limites de alinhamento dos membros.
O operador sizeof
nunca resulta em 0, até mesmo para uma classe vazia.
O operador sizeof
não pode ser usado com os seguintes operandos:
Funções. (No entanto,
sizeof
pode ser aplicado aos ponteiros para as funções.)Campos de bit.
Classes indefinidas.
O tipo
void
.Matrizes alocadas dinamicamente.
Matrizes externas.
Tipos incompletos.
Nomes entre parênteses de tipos incompletos.
Quando o operador sizeof
é aplicado a uma referência, o resultado é o mesmo que seria obtido se sizeof
tivesse sido aplicado ao próprio objeto.
Se uma matriz não dimensionada é o último elemento de uma estrutura, o operador sizeof
retorna o tamanho da estrutura sem a matriz.
O operador sizeof
é frequentemente usado para calcular o número de elementos em uma matriz usando uma expressão no formato:
sizeof array / sizeof array[0]
Confira também
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de