Estrutura de dados

Disponível somente no TrabalhosFeitos
  • Páginas : 3 (555 palavras )
  • Download(s) : 0
  • Publicado : 8 de fevereiro de 2013
Ler documento completo
Amostra do texto
Linguagem C:
ponteiros para estruturas,
alocação dinânica
Prof. Críston
Algoritmos e Programação

Algoritmos e Programação: linguagem C
Algoritmos

Ponteiro para estrutura
typedef struct
{
charnome[100];
int idade;
} pessoa;
main()
{
pessoa joao;
pessoa *p = &joao;
strcpy(joao.nome, "joao da silva");
joao.idade = 20;
printf("%s, %d\n", (*p).nome, (*p).idade);
(*p).idade = 18;
printf("%s, %d\n",joao.nome, joao.idade);
}

Algoritmos e Programação: linguagem C
Algoritmos

Operador ->

substitui

(*p).

typedef struct
{
char nome[100];
int idade;
} pessoa;
main()
{
pessoa joao;
pessoa *p =&joao;
strcpy(joao.nome, "joao da silva");
joao.idade = 20;
printf("%s, %d\n", p->nome, p->idade);
p->idade = 18;
printf("%s, %d\n", joao.nome, joao.idade);
}

Algoritmos e Programação: linguagem CAlgoritmos

Estruturas auto-referenciadas
typedef struct pessoa pessoa;
struct pessoa
{
char nome[100];
int idade;
pessoa *pai;
};
main()
{
pessoa joao, pedro;
pessoa *p = &joao;
strcpy(joao.nome, "joaoda silva"); joao.idade = 20;
strcpy(pedro.nome, "pedro da silva"); pedro.idade = 45;
joao.pai = &pedro;
printf("%s, %d\n", joao.pai->nome, joao.pai->idade);
printf("%s, %d\n", p->pai->nome,p->pai->idade);
}

Algoritmos e Programação: linguagem C
Algoritmos

Se não fosse o operador -> ...

printf("%s, %d\n", (*(*p).pai).nome, (*(*p).pai).idade);
// no lugar de
printf("%s, %d\n", p->pai->nome,p->pai->idade);

Algoritmos e Programação: linguagem C
Algoritmos

Alocação dinâmica
• Permite solicitar memória em tempo de execução
• Função para alocar memória (stdlib.h):
malloc(num_bytes)

–Retorna o endereço de memória da região alocada
– Retorna zero se não for possível alocar

• Função para liberar a memória (stdlib.h):
free(endereco_regiao_alocada)

– A região fica disponível para outrasvariáveis/alocações

Algoritmos e Programação: linguagem C
Algoritmos

Alocação dinâmica
main()
{
// alocando um inteiro
int *p = (int*) malloc(sizeof(int));
if (p)
{
*p = 3;
printf("%d\n", *p);...
tracking img