|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Nov 2008
Messaggi: 138
|
[C] Errore con doppio puntatore
Oggi dopo un anno circa che non usavo il c ho provato a mettermi a "tradurre" dei programmi molto semplici dal c++ al c, tanto per rinfrescarmi la memoria sulle varie differenze (tipo riferimenti, funzioni diverse per la memoria dinamica ecc.). Sul classico programma che fa push pop ecc. sugli stack il compilatore mi da un errore che non sono riuscito a capire sulla dereferenziazione di un doppio puntatore, ecco il codice:
Codice:
void push(nodo **n, char x){ nodo * y = malloc(sizeof(nodo)); if(!y)return; y -> next = *n; *n = y; y -> info = x; /* perche' non funziona usando *n -> info = x; ? Il compilatore da l'errore: "error: request for member ‘info’ in something not a structure or union" */ return; } La struttura nodo è questa: Codice:
struct nodo{ char info; struct nodo * next; }; |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2774
|
Hai provato scrivendo *n tra parentesi?
Codice:
(*n)->info=x; |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Nov 2008
Messaggi: 138
|
No ma ho proprio l'impressione che compilerà
![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:56.