grazie ragazzi,
se io, anzichè assegnare l'idirizzo di string1 a string2, avessi copiato i caratteri con strcpy, in questo caso ovviamente avrei prima dovuto allocare la memoria per string2...
guardate allora quest'altro frammento di codice. I casi sono due: potrei pensare che il puntatore char *str debba essere allocato dinamicamente (quindi il codice è concettualmente errato), perchè in questo modo la funzione ritorna un indirizzo che punta ad una variabile allocata nello stack. quindi quando esco dalla funzione la variabile viene distrutta. però penso anche ad un'altra cosa: io assegno a str un indirizzo di un parametro della funzione, quindi magari quando esco dalla funzione l'indirizzo rimane valido perchè è quello di una variabile dichiarata all'esterno della stessa... dove sta la verità?
spero di essermi spiegato
codice:typedef struct tag_stackNode{ char string[SIZE_BUF]; struct tag_stackNode *nextPtr; } StackNode; typedef StackNode *stacknodePtr; char *stackTop (stacknodePtr headPtr){ char *str; str = headPtr->string; return str; }