aula 167

Como criar novos tipos de dados em C com TYPEDEF STRUCT?

Até o momento, tudo que fizemos no nosso curso de programação C foi com tipos primitivos, os tipos de dados fornecidos pela linguagem C. Nesta aula vamos aprender como criar novos tipos de dados em C com TYPEDEF STRUCT.

Resolver problemas mais complexos pode ser trabalhoso apenas com os tipos primitivos (int, char, float e double). Por isso a linguagem C permite a criação de novos tipos de dados.

Imagine que precisamos fazer um cadastro de pessoas com APENAS três informações, nome, idade e sexo. A princípio parece bem simples, e é, se formos tratar os dados de uma única pessoa. Agora, imagine que precisamos gerenciar um conjunto de pessoas para fazer buscas. Como gerenciar vários nomes, várias idades, vários sexos?

Em situações desse tipo podemos criar o tipo pessoa. Imagine essa ação de criar um novo tipo de dado como criar uma caixa e colocar dentro dela tipos primitivos já fornecidos pela linguagem C. Assim o tipo pessoa pode ser entendido como uma caixinha contendo em seu interior um int (idade), um char (sexo) e um vetor de caracteres (nome).

tipo pessoa
Abstração para a criação de um novo tipo de dado, empacotando tipos primitivos dentro de uma nova estrutura.

Um novo tipo de dado pode ser construído na linguagem C usando as palavras reservadas typedef struct. Entre o par de chaves incluímos os tipos primitivos que irão formar nosso novo tipo de dados e, após a chave de fechamento, damos um nome ao novo tipo de dado e finalizamos com um ponto e vírgula, como no exemplo a seguir.

typedef struct{
    int idade;
    char sexo;
    char nome[100];
}Pessoa;

A palavra reservada typedef não é obrigatória. Assim, não há apenas uma forma correta para se criar novos tipos de dados. A seguir é apresentado outra forma. Perceba que agora o “nome” do novo tipo de dado está antes da chave de abertura.

struct Pessoa2{
    int idade;
    char sexo;
    char nome[100];
};

A diferença entre as duas formas está no momento de criar uma variável desse novo tipo. Quando fazemos uso da palavra reservada typedef, podermos usar diretamente o nome do novo tipo de dado. Em contrapartida, quando omitimos a palavra reservada typedef, precisamos usar a palavra reservada struct seguida do nome do tipo, como apresentado a seguir.

    // tipo nome;
    Pessoa pessoa1;
    struct Pessoa2 pessoa2;

Para acessar cada campo do nosso novo tipo de dado basta digitar o nome da variável seguido de um ponto (.). Em uma IDE como o CodeBlocks, ao pressionar o ponto será exibida uma pequena aba contendo todos os tipos primitivos que compõem o novo tipo de dado, como apresentado na figura a seguir.

novo tipo de dado
Acessando os campos internos do tipo de dado Pessoa.

Código completo de exemplo em C para a criação do tipo de dado Pessoa

#include <stdio.h>
#include <stdlib.h>

/*
      Aula 167: Como criar novos tipos de dados em C com typedef struct

      Escrito por Wagner Gaspar
      Março de 2021
*/

typedef struct{
    int idade;
    char sexo;
    char nome[100];
}Pessoa;

struct Pessoa2{
    int idade;
    char sexo;
    char nome[100];
};

int main() {
    Pessoa pessoa1;
    struct Pessoa2 pessoa2;

    pessoa2.idade = 35;
    pessoa2.sexo = 'f';
    strcpy(pessoa2.nome,"Maria Madalena");

    printf("Nome: %s\nIdade: %d\nSexo: %c\n", pessoa2.nome, pessoa2.idade, pessoa2.sexo);

    return 0;
}

Deixe um comentário

13 + dez =

Wagner Gaspar

Capixaba de São Gabriel da Palha, Espírito Santo. Bacharel em Ciência da Computação pela Universidade Federal do Amazonas e mestre em informática pela Universidade Federal do Espírito Santo.