Estrutura de dados
Prof. Críston
Algoritmos e Programação
Algoritmos e Programação: linguagem C
Algoritmos
Ponteiro para estrutura 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 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 C
Algoritmos
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, "joao da 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 outras variá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);