PDA

Visualizza la versione completa : [C] Funzioni: dichiarazione e invocazione


marcusbasic
24-01-2006, 16:31
salve a tutti sono uno studente universitario di informatica e tra meno di un mese ho un esame sul linguaggio C... ho cominciato a studiare da 5 giorni quindi le mie prime domande saranno banali.

sono sulle funzioni, ho capito bene la sintassi per la dichiarazione, però li dove mi blocco è quando devo dare il valore di ritorno nella funzione vera e propria.

la variabile che andiamo ad assegnare nella funzione, deve avere poi la sua inizializzazione nel main()?

qualcuno mi posta qualche semplice esempio?

oregon
24-01-2006, 16:57
Originariamente inviato da marcusbasic
salve a tutti sono uno studente universitario di informatica e tra meno di un mese ho un esame sul linguaggio C... ho cominciato a studiare da 5 giorni quindi le mie prime domande saranno banali.

sono sulle funzioni, ho capito bene la sintassi per la dichiarazione, però li dove mi blocco è quando devo dare il valore di ritorno nella funzione vera e propria.

la variabile che andiamo ad assegnare nella funzione, deve avere poi la sua inizializzazione nel main()?

qualcuno mi posta qualche semplice esempio?

Non ho compreso bene la tua perplessita' ... forse e' meglio ragionare su un esempio



int funzione(int x)
{
return(x+2);
}

void main()
{
int z;

z = funzione(8);
}


Cosa non comprendi di queste righe?


P.S. Hai cominciato da 5 giorni e tra un mese devi conoscere il C partendo da zero ... Forse avresti dovuto iniziare un po' prima ...

marcusbasic
24-01-2006, 17:10
prima di tutto ti ringrazio per la disponibilità tipo tutor...


int funzione(int x)
{
return(x+2);
}

void main()
{
int z;

z = funzione(8);
}

allora sto cercando di mettere bene in testa come si fa una dichiarazione, una definizione e un'invocazione...

in questo caso se ho ben capito nel main() abbiamo l'invocazione che sarebbe
z = funzione(8);

il nome "funzione" ci riporta alla sua definizione in
int funzione(int x)
che ci ritorna x+2 (ovvero incrementare di 2 la x)

ma noi il valore di "x" dove lo abbiamo dichiarato?

oregon
24-01-2006, 17:36
Originariamente inviato da marcusbasic
prima di tutto ti ringrazio per la disponibilità tipo tutor...

int funzione(int x)
{
return(x+2);
}

void main()
{
int z;

z = funzione(8);
}

...

ma noi il valore di "x" dove lo abbiamo dichiarato?

In questo caso x e' detto "parametro formale" in quanto serve a rappresentare all'interno della funzione, il valore che assumerà, di chiamata in chiamata, attraverso l'assegnazione del "parametro attuale", nel nostro caso 8.

A runtime, il valore 8 (parametro attuale) viene assegnato alla x (parametro formale) e con quel valore viene eseguito il codice all'interno della funzione. Questa eseguirà la riga

return(8+2);

Se chiamata nuovamente con altro valore, ad esempio



void main()
{
int z;

z = funzione(8);

z = funzione(15);
}


la seconda volta, viene assegnato dal runtime il valore 15 alla x e con quel valore lavora.

Per assegnare il parametro attuale a quello formale, il compilatore genera il codice adeguato che si serve dello stack. In pratica genera del codice tipo

Push 8 (inserisce 8 nello stack)
Call funzione (passa ad eseguire la funzione)

e nella funzione

Pop x (preleva un valore dallo stack e lo inserisce nella x)
... (lavora con la x)

marcusbasic
24-01-2006, 17:43
troppo gentile, se nn ci sono problemi proverò a postarti i miei singoli dubbi... anche se al momento sono molto elementari

Loading