c - Struct




Já pensaram em criar seus próprios tipos de dados? Tipos de dados reais? Como coordenadas, pessoas, animais e etc? Isso tudo é possivel com a utilização de estrutruras, este tipo de dado lhe permite criar combinações com tipos de dados diferentes.
Suponha que quer criar uma pessoa em seu programa, certo? Agora quais características teria essa pessoa? Podemos listar algumas:

  • Nome
  • Idade
  • Sexo
  • Altura

Estrutura em C

Para implementar a estrutura acima em C, você deve usar a palavra reservada struct para definir um tipo de dado composto, a declaração fica desse jeito:

Struct Pessoa{ char nome[20]; int idade; char sexo; double altura; }

Acessando elementos na Struct

Para acessar os elementos em sua struct, é utilizado o operador de acesso ponto (.) . Esse operador é colocado entre o nome da sua variável e o elemento que deseja ser acessado. Veja um exemplo abaixo de como podemos declarar uma variável do tipo Pessoa e acessar seus elementos:


#include<stdio.h>
#include<string.h>

struct Pessoa{

  char nome[20];

  int idade;

  char sexo;

  double altura;

};

int main()

{

  struct Pessoa pessoa1;/*Declarando uma variável do tipo Pessoa*/

  strcpy(pessoa1.nome, "João");/*Definindo um nome para a pessoa1*/

  pessoa1.idade = 18;

  pessoa1.sexo = 'M';

  pessoa1.altura = 1.75;

  /*Exibindo os elementos  em pessoa1*/

  printf("Nome: %s\nIdade: %d\nSexo: %c\nAltura: %.2lf\n", pessoa1.nome, pessoa1.idade, pessoa1.sexo, pessoa1.altura);

  
  return 0;

}


Você deve obter o seguinte resultado:

Nome: João
Idade: 18
Sexo: M
Altura: 1.75

Vetores de Struct

Para declarar um vetor de struct, é utilizada a mesma sintaxe para um tipo de dado básico. Dessa forma:

struct Pessoa pessoas[2];/*Declarando um vetor de struct*/
strcpy(pessoas[0].nome, "João");/*Definindo um nome para a pessoa1*/
pessoas[0].idade = 18;
pessoas[0].sexo = 'M';
pessoas[0].altura = 1.75;

Passando struct como parâmetro

Você pode passar uma variável struct da mesma maneira que faria com outro tipo de dado:

void exibeNome(struct Pessoa pessoa)
{
printf("%s", pessoa.nome);
}
int main()
{
struct Pessoa pessoa1;/*Declarando um vetor de struct*/
strcpy(pessoa1.nome,"joão");
exibeNome(pessoa1);/*chamando a função para exibir o nome da pessoa1*/
return 0;
}

Ponteiros de Struct

Para declarar um ponteiro de struct, apenas adicione o asterístico antes do nome de sua variável:

struct Pessoa *ponteiroPessoa;

Para guardar o endereço de uma variável do tipo Pessoa, em nosso ponteiro acima utilize o seguinte comando:

ponteiroPessoa = &pessoa1;

Para acessar qualquer elemento da struct com um ponteiro utilize o operador "->": 

ponteiroPessoa->idade = 50;

Esses são basicamente os comandos mais utilizados com struct, no próximo tutorial estudaremos a estrutura union. Até a próxima!


0 comentários:

Postar um comentário