120 likes | 243 Views
Estruturas (struct). Marco Antonio Montebello Júnior marco.antonio@aes.edu.br. Estruturas de Dados. Estruturas. É uma coleção de variáveis referenciadas por um nome Podemos armazenar as coordenadas (x,y) de um ponto. Estruturas.
E N D
Estruturas (struct) Marco Antonio Montebello Júnior marco.antonio@aes.edu.br Estruturas de Dados
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 structidentificador { 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 identificadorou var_struct podem ser omitidos mas não ambos Estrutura de Dados
Nomeando uma Estrutura • Caso1: struct coordenadas { int iX; int iY; }; struct 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 EstruturasAtençã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