ciao ragazzi..
ho un problema..
devo disegnare il record di attivazione sullo stack di una funzione..
ho cercato su internet informazioni sul record,ma mi rendo conto che quello che dovrei fare io si allontana totalmente da quello che leggo..
devo rifarmi a quello che il mio professore vuole..
innanzitutto la funzione di cui devo disegnare il record è questa
codice:
puntElenco InserisciElementoInLista(puntElenco L,char*parola){
puntElenco q=L, prec;
int PosTrovata=0;
if(q==NULL){ // lista vuota
q=inserisci(L,parola);
return(q);
}
//lista con una parola con inseriemnto in testa
if(strcmp(q->info,parola)>=0){
q=inserisci(L,parola);
return q;
}
//lista con almeno una parola, più inserimento dopo la prima parola
while (q!=NULL && (PosTrovata==0))
{
if(strcmp(q->info,parola)<0)
{
prec=q;
q=q->next;
}
else
PosTrovata=1;
}
prec->next=inserisci(q,parola);
return (L);
}
il mio prof per un pezzo di funzione del genere
codice:
float divisione (int a, int*b){
*b=10;
};
main(){
int c=3, e=7;
divisione(c, &e);
printf("la variabile e vale %d",e);
.......
}
fa delle ipotesi,dice supponiamo che per memorizzare un int ho bisogno di un byte,di 2 byte per memorizzare un float e di 4 per memorizzare l'indirizzo di ritorno del programma chiamante
e fa questo "disegno"
stack pointer 319
indirizzo cella di memoria
319 indirizzo di ritorno
320 indirizzo di ritorno
321 indirizzo di ritorno
322 indirizzo di ritorno
323 rappresentazione di 127
324 rappresentazione di 127
325 rappresentazione di 127
326 rappresentazione di 127
327 3
328 spazio risultato
329 spazio risultato
poi dice a e b sono variabili interne alla funzione memorizzate agli indirizzi 327 e
326-323
io non capisco cosa fa..e non so se potete aiutarmi a capire..considerato il fatto che la mia funzione credo sia più complicata e che l'esempio che ho a disposizione se ne discosta molto..
grazie a tutti in ogni caso!!