Objetivos
Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.
Tipos de dados
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.
Tipos derivados/refenciados
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.
Tipo Boolean
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
}
Histórico de atualizações
- 28/07/2025 - revisão 4 - Ajustes: conteúdo de tópicos, exemplos, sintaxes; Adiçao/Correção em links internos;
- 30/09/2024 - revisão 3 - Várias correções e ajustes
- 30/08/2024 - revisão 2 - Correção em links de objetivos
- 09/02/2024 - revisão 1 - correção em navegação, css e erros gramaticais
- 30/06/2023 - versão inicial
Os cursos oferecidos nesta página são cursos fornecidos por parceiros. Ao comprar um curso clicando
em seu banner, você está ajudando a manter o projeto TutorialDev vivo. Os sites dos cursos parceiros utilizam cookies.