Nesta parte do tutorial vamos ver exemplos de declaração de variáveis dos tipos de dados já estudados. Em futuras seções, vamos ver alguns tipos de dados exemplificados com mais detalhes.

A declaração de variáveis númericas é feita como na sintaxa abaixo. A atribuição de valores pode ser no momento da declaração ou durante a execução de nossos programas.

O básico sobre tipos de dados numéricos foram vistos em C Tipos de Dados: Numérico.

Sintaxe
int nome_variavel = valor;
float nome_variavel = valor;
double nome_variavel = valor;
Exemplo 1
#include <stdio.h>

void main()
{
    int numero = 999; //0x3e7 0b001111100111
    float altura = 2.10;
}
Saída
-

O tipo de dado int pode ser utilizado para armazenar números como idade, código ou outro valor em que casas decimais não são necessárias.

Os tipos float e double são utilizadas podem ser utilizadas para armazenar valores como peso, altura, valor monetário e outros que precisam de casas decimais.

Para a declaração de uma string, precisamos declarar uma vetor/array do tipo de dado char ou utilizar um ponteiro para esse tipo de dado.

O básico sobre tipos de dados string/char foram vistos em Tipos de dado String e Char.

Sintaxe
char nome_variavel = valor;
char nome_variavel[] = "valor"; //necessário atribuição
char *nome_variavel = "string"; //string
char string[] = {'s','t','r','i','n','g'};// string

O tipo de dado char aceita tanto caracteres imprimíveis quanto número inteiros positivos, negativos e hexadecimais.

O tipo de dado string aceita caracteres imprimíveis por definição. Quando declaradas como acima, o terminador de string '\0' é adicionado automaticamente.

Exemplo 2
#include <stdio.h>
void main()
{
    char sexo = 'M';
    char codigo = 0xff; //0b11111111

    char string1[] = {'s','t','r','i','n','g'};
    char string2[] = "string2";
    char *string  ="string3";
    
}
Saída
-

O tipo de dados struct é composto de outros tipos de dados, primitivos ou não, para criação de tipos de dados mais complexos e que armazenam diferentes tipos de valores em seus membros.

O uso de struct e operações básicas sobre esse tipo podem ser vistos com mais detalhes em C : Struct.

Sintaxe
struct nome_struct
{
    tipo_dado nome_membro1;
    tipo_dado nome_membro2;
    tipo_dado nome_membroN;
};

O acesso aos membros de uma struct é feito utilizando o operador (.). A atribuição é feita como o operador (=) ou outro operador de atribuição.

Sintaxe
variavel_struct.nome_membro;
variavel_struct.nome_membro = valor;
Exemplo 3
#include <stdio.h>
struct teste
{
    int codigo;
    char sexo;
    char *nome;
};

void main()
{
    struct teste variavel;
    variavel.codigo = 999;
    variavel.sexo = 'M';
    variavel.nome = "Fulano";
}
Saída
-

O tipo de dado union utiliza o mesmo espaço de memória para armazenar seus membros que são acessados logo após a atribuição de uma valor a um membro.

O uso de struct e operações básicas podem ser vistas em Union

Sintaxe
union nome_union
{
    nome_membro1,
    nome_membro2,
    nome_membroN;
};

O acesso aos membros de uma union é feito utilizando o operador (.). A atribuição é feita como o operador (=) ou outro operador de atribuição.

Sintaxe
variavel_union.nome_membro;
variavel_union.nome_membro = valor;
Exemplo 4
#include <stdio.h>
union teste
{
    char valor1;
    float valor2;
    int valor3;
};

void main()
{
    //atribuição e uso fora de ordem irá gerar erro de dados
    union teste variavel;
    
    variavel.valor1 = 'C';
    //uso de variavel.valor1 = 'C';
    
    variavel.valor2 = 1.99;
    //uso de variavel.valor1 = 'C';
    
    variavel.valor2 = 256;
    //uso de variavel.valor1 = 'C';
}
Saída
-

O tipo de dado enum é composto de N membros que são constantes. Seus elementos são associados a valores em tempo de declaração apenas.

Sintaxe
enum nome_enum
{
    NOME_MEMBRO1 = valor1,
    NOME_MEMBRO2 = valor2,
    NOME_MEMBRON = valor3;
};

Diferente do tipo de dado struct e union, no tipo enum não utilizamos o operador (.) para acessar seus membros. Apenas o nome desses é utilizado.

Sintaxe
NOME_MEMBRO1;
NOME_MEMBRO2;
Exemplo 5
#include <stdio.h>
enum teste
{
    VALOR1, //0 valor inicial/default
    VALOR2, //1
    VALOR3, //2
};

void main()
{
    enum teste variavel = VALOR1;
}
Saída
-

A declaração de vetores e matriz dependem de outros tipos de dados primitivos ou não. Todos os tipos fornecidos pela linguagem C pode ser utilizados.

As operações básicas sobre vetores/matrizes podem ser vistos em C: Vetor/Matriz.

Sintaxe
tipo_dado vetor[tamanho] = {valor1,valor2,valorN};
tipo_dado vetor[tamanho];
tipo_dado matriz[linhas][colunas] = {{val1,val2,valN}, //linha 1
                                     {val1,val2,valN}, //linha 2
                                     {val4,val5,valN}};//linha N
tipo_dado matriz[linhas][colunas]; //espaço reservado
Onde
tipo_dado: tipo de dado primitivo, derivado ou outro
tamanho: quantidade de elementos ou dimensão

Tanto matrizes quanto vetores quando não iniciado possuem os espaços reservados baseados em suas dimensões ou linhas/colunas.

Exemplo 6
#include <stdio.h>
union uniao
{
    char valor1;
    float valor2;
    int valor3;
};

enum enumerador
{
    VALOR1,
    VALOR2,
    VALOR3
};

struct teste
{
    int codigo;
    char sexo;
    char *nome;
};

void main()
{
    //vetor
    struct teste vetor_struct[2];
    enum enumerador vetor_enum[2];
    union uniao vetor_uniao[2];
    
    char vetor_char[2];
    int vetor_int[2];
    float vetor_float[2];
    double vetor_double[2];
    
    //matriz
    struct teste matriz_struct[2][2];
    enum enumerador matriz_enum[2][2];
    union uniao matriz_uniao[2][2];
    
    char matriz_char[2][2];
    int matriz_int[2][2];
    float matriz_float[2][2];
    double matriz_double[2][2];

    //exemplos de acesso/atribuição
    vetor_char[0] = 'D';
    matriz_char[0][0] = 'E';
}
Saída
-
  1. 05/10/2024 - revisão 2 - Ajustes gramaticais pontuais
  2. 27/09/2023 - revisão 1 - Correção em link/referências, sintaxe-onde, erros gramaticais e outros
  3. 19/05/2023 - versão inicial