Programar em C/Estruturas: diferenças entre revisões
[edição não verificada] | [edição verificada] |
Conteúdo apagado Conteúdo adicionado
Sem resumo de edição |
|||
Linha 21:
O nome ou identificador pode ser alunos,familia,etc . (têm de ser válidos identifiers)
Não esquecer o ponto e vírgula “;” no fim da declaração.
Campo_um e Campo_dois são variáveis membro – member variables – ou campo da estrutura
Assim criamos novos tipos de dados.
'''Primeiro método:'''
<pre>
Linha 34 ⟶ 36:
</pre>
Aqui o identificador do tipo "struct" é "minha_estrutura" dentro dessa estrutura temos três campos o ultimo é "fruta"
Agora podemos usar esse tipo "struct" para definir variáveis.
struct minha_estrutura nova_estructura
Para ter acesso aos membros definidos dentro da estrutura utilizamos um operador de seleçao de membro "."(um ponto).
<pre>
nova_estrutura.fruta[0]
</pre>
<pre>
</pre>
▲Nos da o primeiro caracter da palavra contida dentro do membro "fruta".<br>
▲Para inicializar um campo da estrutura o processo é o mesmo que usamos com as variáveis.<br>
▲ nova_estrutura.campo_dois = 100 ;
O operador cast também e bastante utilizado para estruturar áreas de estoque temporários (buffer). Os tipos dentro da estrutura devem ser o mesmo do arranjo para evitar problemas de alinhamento.
Linha 172 ⟶ 178:
getline(cin, p[x].name);
printf("Enter height in meters: ");
}
printf("Outputting person data\n");
printf("======================\n");
for (int x = 0; x < MAX; x++){
}
return 0;
Linha 288 ⟶ 292:
}
</pre>
== Estruturas aninhadas ==
A ideia é ter uma estrutura dentro de outra estrutura.
<pre>
#include <stdio.h>
struct Date //estrutura chamada de date
{
int day;
int month;
int year;
};
struct Person
{
char name[100];
int height;
Date bDay; //temos uma nova variável, mas notem o tipo
};
void setValues(Person*);
void getValues(const Person*);
int main ()
{
Person p1;
setValues(&p1);
printf("Outputting person data\n");
printf("======================\n");
getValues(&p1);
return 0;
}
void setValues(Person* pers)
{
printf("Enter person's name: ");
fgets(pers.name, 100, stdin);
printf("Enter height in inches: ");
scanf("%d", &pers.height);
printf("Enter day, month and year of birthday separated by spaces: ");
scanf("%d %d %d\n", &pers.bDay.day, &pers.bDay.month, &pers.bDay.year );
}
void getValues(const Person* pers)
{
printf("Person's name: %s\n", pers.name);
printf("Person's height in inches is: %d\n", pers.height);
printf("Person's birthday in dd/mm/yyyy format is: %d/%d/%d\n", pers.bDay.day, pers.bDay.month, pers.bDay.year );
}
</pre>
Reparem que a estrutura Date tem de ser declarada antes da estrutura Person, pois caso contrário o compilador não entendia a tipologia declarada na estrutura Person.
|