Estrutura de dados em C
A minha dúvida é a seguinte, em relação a ponteiros.
#define MAX 10
typedef struct {
int elementos[MAX];
int topo;
} pilha;
MAIN
pilha p; //declaro uma variável p do tipo da estrutura que foi criada
empilha(&p,13);
empilha(&p,13);
int empilha(pilha *p, int dado) {
if(cheiaPilha(*p)) //Primeira pergunta - Porque não posso utilizar cheiaPilha(p) aqui? Tem que ser exclusivamente um ponteiro?
return 0;
(p->topo)++;
p->elementos[p->topo]=dado;
return 1;
A segunda pergunta é a seguinte:
A chamada por referência em empilha(&p,13), faz uma cópia para a função que declara um ponteiro, só que nos ponteiros eles vão armazenar os endereços da variavel p?
/applications/core/interface/imageproxy/imageproxy.php?img=http://img849.imageshack.us/img849/8657/endereospilhas.png&key=c3e36e4ca37af2e767387afc0ebf1d89dec1663f329e6750f97a2ac71f1f7a87" alt="endereospilhas.png" />
em p.topo, p.elementos[0], p.elementos[1] ficaria os valores e em p->topo, p->elementos[1], ficaria os endereços das variáveis de p? É isso? Ou lista *p, teria apenas uma "palavra" da memória no qual guarda o primeiro endereço da memória p?
Discussão (1)
Carregando comentários...