Programar em C/Estruturas: diferenças entre revisões

[edição não verificada][edição verificada]
Conteúdo apagado Conteúdo adicionado
Abacaxi (discussão | contribs)
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. Podemos ter também funções membro.
 
Estamos a criar novas tipologias de dados.
Assim criamos novos tipos de dados.
<b>Primeiro Método :</b><br>
 
'''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"
 
"fruta"<br>
Agora podemos usar esse tipo "struct" para definir variáveis.<br>
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>
 
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>
<pre>
nova_estrutura.campo_dois = 100 ;
</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: ");
cin >>scanf("%d\n", &p[x].height);
}
printf("Outputting person data\n");
printf("======================\n");
for (int x = 0; x < MAX; x++){
cout << printf("Person #"%d's <<name xis +%s 1and <<height is %d.\n"'s, namex is+ "1, p[x].name, p[x].height);
<< p[x].name << " and height is "
<< p[x].height << endl;
}
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.