FennFelis
(usa Ubuntu)
Enviado em 16/08/2012 - 01:09h
_di0 escreveu:
Não entendi muito bem sua pergunta, mas se já tem um ponteiro apontando para algum dado na memória e quer criar um ponteiro que aponte para esse ponteiro, criando níveis de apontamento, você precisa de um ponteiro duplo ou seja, um ponteiro para ponteiro.
int foo = 1, bar = 2;
int *p; // ponteiro de inteiro
int **pp; // ponteiro que aponta para ponteiro de inteiro
p = &foo;
pp = &p; // pp armazena endereço de p
pp aponta para p, pode desreferenciar o valor de p da forma padrão, **pp ( desferenciando o valor apontado por p, 1 no caso)
Eu entendi +- oq vc quis dizer, o que eu queria saber é se, por exemplo:
#include <stdio.h>
struct data{
int i;
struct data *prox;
};
struct data *ptglobal;
void Aloca(){
ptglobal=malloc(sizeof(struct data));
ptglobal->i=-1;
ptglobal->prox=NULL;
}
void func1(int x){
struct data *aux;
aux=ptglobal->prox;
aux=malloc(sizeof(struct data));
aux->i=x;
aux->prox=NULL;
//A questão é por que aux não adiciona o nó ao ptglobal?
}
int main(){
Aloca();
func1();
return 0;
}