Definindo a estrutura, você pode declarar um exemplo dele e atribuir valores aos membros que usam a notação do ponto. O seguinte exemplo ilustra o uso da estrutura do mês.
#include <stdio.h>
#include <string.h>
struct month
{
char name[10];
char abbreviation[4];
int days;
};
int main()
{
struct month m;
strcpy(m.name, "January");
strcpy(m.abbreviation, "Jan");
m.days = 31;
printf("%s is abbreviated as %s and has %d days\n", m.name, m.abbreviation, m.days);
return 0;
}
A saída do programa será como segue:
January is abbreviated as Jan and has 31 days |
Todos os compiladores C do ANSI permitem que você atribua uma estrutura a outra, executando uma cópia membro-sábia. Se nós tivéssemos as estruturas do mês chamadas m1 e m2, então nós poderíamos atribuir os valores de m1 ao m2 com o seguinte:
- Estrutura com membros do ponteiro.
- A estrutura inicializa.
- Passando uma estrutura a uma função.
- Ponteiros e estruturas.
Estruturas com membros do ponteiro em C
Prender cordas em uma disposição fixa do tamanho é uso inefficient da memória. Uma aproximação mais eficiente seria usar ponteiros. Os ponteiros são usados nas estruturas exatamente na mesma maneira que são usados em definições normais do ponteiro. Deixar-nos ver um exemplo:
#include <string.h>
#include <malloc.h>
struct month
{
char *name;
char *abbreviation;
int days;
};
int main()
{
struct month m;
m.name = (char *)malloc((strlen("January")+1) *
sizeof(char));
strcpy(m.name, "January");
m.abbreviation = (char *)malloc((strlen("Jan")+1) *
sizeof(char));
strcpy(m.abbreviation, "Jan");
m.days = 31;
printf("%s is abbreviated as %s and has %d days\n",
m.name, m.abbreviation, m.days);
return 0;
}
A saída do programa será como segue:
January is abbreviated as Jan and has 31 days |
|