Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

A linguagem C++ possui em seu repertório de tipos de dados primitivos para armazenar números inteiros, racionais, caracteres, cadeia de caracteres, vetores, matrizes, estruturas, enumeradores, uniões, ponteiros e reference.

O uso desses tipos de dados para declaração de variáveis e constantes será visto em C++ Básico: Variáves e Constantes.

Os tipos de dados abaixo serão vistos de forma superficial. Suas respectivas seções, tipos derivados, devem ser visitada para mais informações.

Além deles, C++ possui outros tipos complexos em suas bibliotecas nativas que também serão vistos em suas respectivas seções em futuras atualizações.

Para manipular dados númericos, a linguagem C++ fornece os tipos primitivos abaixo:

Tipo Uso Exemplo Seção
int Númerico decimais(base 10) 10, -10 -
float Numéros racionais 1.99, -1.99 -
double Números racionais 1.99, -1.99 -
char caracteres e inteiros 0,'A', -128, 255 -

Os tipos de dados float e double, também são chamados de ponto-flutuante. A diferença entre ambas está ligado à faixa de dados e precisão de casas decimais.

A sinalização ou não são definidas utilizando modificadores serão vistos mais adiante em C++ Básico: Modificadores.

O tipo int é utilizado para armazenar números inteiros, positivos e negativos. Possuem um tamanho de 4 bytes em memória e armazena dados no intervalo entre -2.147.483.648 e 2.147.483.647.

Sintaxe
int
Exemplo 1
0,1,10,-10

O tipo int também aceita que um valor hexadecimal ou octal sejam atribuídos. Utiliza-se 0x para indicar que um número é hexadecimal e "0" para indicar octal:

Exemplo 2
016, 0xff

O tipo char é utilizado para armazenar caracteres e números inteiros positivos e negativos. Possuem um tamanho de 1 byte em memória e armazena valores entre -128 e 127.

Sintaxe
char
Exemplo 3
0,1,-1,-10,'a','Z'

O tipo int também aceita que um valor hexadecimal ou octal sejam atribuídos. Utiliza-se 0x para indicar que um número é hexadecimal e "0" para indicar octal:

Exemplo 4
017, 0xf0

Quando um caracter imprimível é utilizado como valor de atribuição, o mesmo deve estar contido entre ('). Para valores hexadecimais ou octais, utilizar 0 ou 0x com prefixo ao valor.

O tipo double é utilizado para armazenar números(Ponto flutuante) positivos e negativos de com casas decimais. Possuem um tamanho de 8 bytes em memória e armazena dados entre 1.7E-308 até 1.7E+308.

Sintaxe
double
Exemplo 5

12.123456

O tipo float é semelhante ao double, armazena números positivos e negativos de com casas decimais. Possuem um tamanho de 4 bytes em memória e armazenam dados entre 1.175494e-38 e 3.402823e+38.

Sintaxe
float
Exemplo 6

2.500000

Tanto o tipo float quanto o double são utilizados para armazenar números com casas decimais. A principal diferença é o tamanho em bytes desses dois tipos que proporcionam mais ou menos precisão de seus valores. Abaixo uma pequena tabela básica comparativa.

float double
tamanho: 4 bytes tamanho: 8 bytes
7 dígitos de precisão 15 dígitos de precisão
Suporta 7 dígitos Suporta 15 dígitos

Os tipos de dados derivados, são tipos de dados compostos em outros tipos de dados. A linguagem C++ fornece os seguintes tipos de dados:

Tipo Uso Exemplo Seção
Vetor(Array) variáveis 1,2,3,... Visitar
Matriz(Array 2d) matrizes - Visitar
String Textos "um texto" Visitar
Struct Tipos complexos - Visitar
Enum Constantes 0,1,2,3 Visitar
Union União de tipos - Visitar

Os tipos de dados string armazenam caracteres de texto, justapostos, em seu conteúdo. As string em C++ são declaradas utilizando a palavra reservada string.

Tab. 1.: Abstração de um string
0 1 2 3 4 5 6
's' 't' 'r' 'i' 'n' 'g' '\0'
Sintaxe
string nome_variavel;
Exemplo 8
string minhaString = "ABC";

Em C++, uma string é mutável e sempre é terminada com o caracteres '\0' . Uma string sem esse terminador pode gerar erro de acesso a locais de memória.

Mais informações sobre string podem ser vistas em sua seção C++ Básico: Strings.

O tipo struct é um tipo de dado que é composto de um ou mais membros de tipos de dados diferentes. Seu tamanho é variável devido ao fato de possuir membros com diferentes tipos em sua composição.

O tipo de dados struct é principalmente utilizado para criar tipos mais complexos de dados.

Sintaxe
struct nome
{
  tipo_dado membro1;
  tipo_dado membro2;
  tipo_dado membroN;
}

O corpo de uma struct é delimitado por "{" e "}" e seus membros são separados por (;) e podem ser iniciados ou não. Os tipos do dados já estudados podem ser utilizados. Ponteiros, vetores e matrizes de ponteiro também podem ser utilizados como membros.

O acesso aos membros de um struct é feita utilizando o operadore (.) seguido do nome do do membro como pode ver visto na sintaxe abaixo:

Sintaxe
variavel_struct.nome_membro

Mais informações sobre o struct podem ser vistas em sua seção C++ Básico: Struct.

O tipo enum é utilizado para criar enumerações em cada membro de seus membros possui um valor inteiro associado. Os membro são separado por (,) e devem estar contidos em { e }.

Sintaxe
enum nome_enum
{
  nome_membro1,
  nome_membro2,
  nome_membroN;
}
Sintaxe
enum nome_enum
{
  nome_membro1 = 10,
  nome_membro2 = 20,
  nome_membroN = N;
}

Mais informações sobre o tipo enum podem ser vistas em sua seção C++ Básico: Enum.

O tipo union é um tipo de dado complexo que permite que um mesmo local de memória seja utilizado para armazenar mais de uma variável. Assim como enuns, seus membros devem ser declarados entre "{" e "}" e separados por ";".

Sintaxe
union nome_union
{
  tipo_dado membro1;
  tipo_dado membro2;
  tipo_dado membroN;
}

Mais informações sobre o tipo de dado union podem ser vistas em sua seção C++ Básico: Union.

Vetor e matriz são derivados de outros tipos de dados que armazenam dados de forma sequencial em memória. Nesta parte do tutorial vamos ver o básico sobre vetor/matriz.

Na linguagem C++ podemos criar vetores a partir dos tipos de dados estudados já estudados. Podemos enxergar um vetor como um local para armazenar variáveis de forma sequencial.

Tab. 1: Vetor de int
0 1 2 3 4 5 (...)
1 10 -100 0 2 - -

Comando de repetição como for, while e do-while são utilizados para percorrer o conteúdo de um vetor. Esses comandos podem ser vistos em C++ Comandos.

Mais informações sobre o tipo de dado Vetor podem ser vistas em sua seção C++ Básico: Vetor.

Uma matriz é um vetor de duas dimensões. Sendo assim, seus elementos são armazenados de forma sequencial. Uma matriz com as dimensões 3x3 pode ser representada na forma abaixo:

Tab. 2: Abstração de uma matriz de int
L/C 0 1 2
0 10 20 30
1 40 50 60
2 70 80 90

O acesso e atribuição/atualização de um elemento a uma determinada linha e coluna dentro de uma matriz é feito utilizando suas linhas e colunas [ e ]. Baseado no exemplos acima temos:

Comando de repetição como for, while e do-while são utilizados para percorrer o conteúdo de uma matriz. O tipo de dado Ponteiro pode ser utilizado para auxiliar na iteração desse tipo de dado.

Mais informações sobre o Matriz podem ser vistas em sua seção C++ Básico: Matriz.

Os tipos de dados referenciados armazenam endereços de memória. linguagem C++ permite a declaração dos seguintes tipos de dados:

Tipo Uso Exemplo Seção
Vetor(Array) variáveis 1,2,3,... Visitar
Matriz(Array 2d) matrizes - Visitar
String Textos "um texto" Visitar
Ponteiro Endereço de memória *ponteiro Visitar
Reference Referencia para variáveis &variavel Visitar

O tipo de dado reference armazena o endereço de memória. Sua declaração é feita utilizando o operador &. Com esse tipo de dado podemos manipular dados de forma indireta.

Exemplo 7
int a = 10;
int &ref = a;

Mais informações sobre o tipo de dado reference podem ser vistas em sua seção C++ Básico: Reference.

O tipo de dado ponteiro armazena o endereço de memória de uma variável ou memória alocada. Sua declaração é feita utilizando o operador *. Diferente de reference, o tipo ponteiro permite o uso de artimética.

Exemplo 8
int a = 10;
int *ponteiro = &a;

Mais informações sobre o tipo de dado ponteiro podem ser vistas em sua seção C++ Básico: Ponteiro.

O tipo boolean trabalha com valores true e false. Esse tipo de dado está disponível nativamente em C++ diferente de C em que é necessário o uso de biblioteca.

Sintaxe
bool
Exemplo 9
true, false

Nesta parte serão vistos os tipos de dados que não se encaixam nos grupos vistos anteriormente como nullptr e void.

A linguagem C++ possui um tipo de dado nulo representado pela constante nullptr. Esse é utilizado nos tipos de dados de referência como ponteiros, funções e alocação de memória para informar que o recurso não é mais utilizado ou não está iniciado.

Sintaxe
nullptr;
Exemplo 10
tipo_dado *ponteiro = nullptr;             

O pseudo-tipo void é utilizada na declaração de ponteiros, retorno de funções, mas não podemos utilizá-lo para declarar variáveis, constantes ou membros de structs, unions e outros.

Sintaxe
void *ponteiro; 
Sintaxe
void funcao(void); //protótipo
Exemplo 11
#include <stdio.h> 

void funcao main(void)  
{
    //corpo omitido
}
  1. 28/07/2025 - revisão 4 - Ajustes: conteúdo de tópicos, exemplos, sintaxes; Adiçao/Correção em links internos;
  2. 30/09/2024 - revisão 3 - Várias correções e ajustes
  3. 30/08/2024 - revisão 2 - Correção em links de objetivos
  4. 09/02/2024 - revisão 1 - correção em navegação, css e erros gramaticais
  5. 30/06/2023 - versão inicial