Referência a elementos
Artigo: Referência a elementos. Pesquise 862.000+ trabalhos acadêmicosPor: • 12/6/2013 • Artigo • 309 Palavras (2 Páginas) • 357 Visualizações
Referência a elementos
Os elementos duma estrutura são referenciados com o operador .
Por exemplo
printf("%d %d", pp.x,pp.y);
Estruturas encaixadas
Os elementos das estruturas podem ser estruturas. Por exemplo, pode-se definir um rectângulo usando a estrutura ponto, considerando o ponto superior direito e o ponto inferior esquerdo:
struct rectanglo {
struct ponto pie;
struct ponto psd;
};
Se tivermos a variável
struct rectangulo caixa
podemos referir-nos à coordenada x do ponto pie de caixa por
caixa.pie.x
Typedef
Pode-se usar o typedef para atribuir nomes a estruturas.
typedeff struct ponto ponto_p;
ponto_p pontos[20]
ou, ainda a estrutura é definida simultaneamente
typedef struct ponto {
int x;
int y;
} ponto_p;
Operações em estruturas
As únicas operações em estruturas são as de acesso a elementos (o operador . ) e as de cópia ou atribuição. A atribuição de estruturas permite que o contéudo duma estrutura seja copiado para outra estrutura. Considere o seguinte programa
#include
main()
{
struct exemplo {
int a;
float b;
char c;
};
struct exemplo ex1, ex2;
ex1.a=2;
ex1.b=1.0/2.0;
ex1.c='g';
ex2=ex1;
printf("a =%3d, b=%4.3f, c=%c\n", ex2.a,ex2.b, ex2.c);
}
No exemplo anterior, a variável ex1 podia ter sido inicializada por
struct exemplo ex1={ 2, 0.5,'g'};
O endereço duma estrutura pode ser obtido com o operador & .
Estruturas como argumentos e resultados de funções
A atribuição de estruturas inclui a passagem de argumentos para funções e os valores retornados de funções.
A função seguinte retorna uma estrutura tipo ponto:
struct ponto cria_pt (int x,int y) {
struct ponto tmp;
tmp.x=x;
tmp.y=y;
return tmp;
}
A função seguinte tem como argumentos duas estruturas, uma tipo ponto outra tipo rectangulo, e retorna 1 ou 0 consoante o ponto está ou não no interior do rectânulo.
int dentro_rect (struct ponto p, struct rectangulo r) {
return p.x >= r.pie.x && p.x < r.psd.x && p.y>=r.pie.y && p.y < r.psd.y;
}
...