Estruturas (struct)
Estruturas de Dados
Marco Antonio Montebello Júnior
[email protected]
Estruturas


É uma coleção de variáveis referenciadas
por um nome
Podemos armazenar as coordenadas (x,y)
de um ponto
Estrutura de Dados
Estruturas


A palavra struct informa ao compilador que
um modelo de estrutura está sendo definido.
Declaração:
struct coordenadas
{
int iX;
int iY;
};

A estrutura contém 2 variáveis do tipo int, e é
chamada de coordenadas
Estrutura de Dados
Declaração
struct identificador
{
tipo1 nome1;
tipo2 nome2;
...
tipoN nomeN;
} var_struct;



Pode conter um número arbitrário de dados de tipos
diferentes
Pode-se nomear a estrutura para referencia-la
O identificador ou var_struct podem ser omitidos
mas não ambos
Estrutura de Dados
Nomeando uma Estrutura

Caso1:
struct
{
int
int
};
struct

coordenadas
iX;
iY;
coordenadas coord1, coord1;
Caso2:
struct
{
int iX;
int iY;
} coord1, coord2;
Estrutura de Dados
Acessar os dados de uma
Estrutura
Acesso aos dados:
var_struct.campo

//Atribuições
coord1.iX = 10;
coord1.iY = 50;
coord2.iX = 15;
coord2.iY = 25;
Estrutura de Dados
Operações com Estruturas

Inicializando uma estrutura:
struct coordenadas coord1 = {15, 38};

Atribuição entre estruturas do mesmo tipo:
struct coordenadas coord1 = {15, 38};
struct coordenadas coord2;
coord2 = coord1
//coord2.iX = coord1.iX e coord2.iY = coord1.iY;

Os campos correspondentes das estruturas são
automaticamente da origem para o destino
Estrutura de Dados
Atribuição entre Estruturas
Atenção!!!

Quando a estrutura possuir ponteiros:
struct Times
{
char
*cNome;
int
iIdade;
} tim1, tim2;
tim1.cNome = “Timão”;
tim1.iIdade = 96;
tim2 = tim1;
tim1 e tim2, apontam
tim1.cNome == tim2.cNome == “Timão”

Estrutura de Dados
Estruturas como Parâmetros
de Retorno
struct coordenadas coord (int iV1, int iV2)
{
struct coordenadas tmp;
tmp.iX = iV1;
tmp.iY = iV2;
return (tmp);
}
main()
{
struct coordenadas ret;
ret = coord(31, 23);
}
Estrutura de Dados
Passando Estruturas como
Parâmetros
int iResult(struct coordenadas coord1)
{
int iSoma;
iSoma = coord1.iX + coord1.iY;
return(iSoma);
}
main()
{
int iRet;
struct coordenadas temp;
temp.iX = 31;
temp.iY = 3;
iRet = iResult(temp); //iRet = 34
}
Estrutura de Dados
Passando Ponteiros de
Estruturas com Parâmetros
void Pontos(struct coordenadas *coord)
{
coord->iX = 19;
coord->iY = 85;
}
main()
{
struct coordenadas Param;
Pontos(&Param);
//X = 19 – Y = 85
printf(“X = %i - Y = %i”, Param.iX, Param.iY);
}
Estrutura de Dados
Acesso ao Ponteiro


O acesso ao ponteiro da estrutura é feito
através do operador:
->
Estrutura de Dados
Download

struct - Objetivo Sorocaba