/* File: passaggio_per_valore.c */ /* Time-stamp: "2006-01-30 16:01:36 calvanes" */ /* Scopo: esemplificazione dei concetti di - passaggio di parametri per valore - passaggio di parametri per riferimento */ #include //prototipi delle funzioni (procedure) usate void valore (int); void riferimento (int*); int main(void) { int s; printf("\n********************* Inizio MAIN ************************"); printf("\nSono il main()\n"); printf("\nInserisci un intero: "); scanf("%d", &s); printf("\nIl numero che ha inserito l'utente e' %d\n",s); printf("\nOra chiamo la funzione valore(), con parametro ATTUALE pari a %d\n",s); system("PAUSE"); valore(s); printf("\nSONO DI NUOVO IL MAIN() e dopo la chiamata alla funzione valore()\n"); printf("il parametro ATTUALE vale sempre %d\n", s); printf("\nOra chiamo la funzione riferimento(), con parametro ATTUALE pari a %d\n",s); riferimento(&s); printf("\nSONO DI NUOVO IL MAIN() e dopo la chiamata alla funzione riferimento()\n"); printf("il parametro ATTUALE e' stato modificato e vale %d\n", s); printf("\n********************* Fine MAIN ************************\n"); system("PAUSE"); return 0; } void valore (int a) { printf("\n********************* Inizio funzione valore() ************************"); printf("\nSono la funzione valore().\nIl mio parametro FORMALE p passato dal main PER VALORE vale %d\n", a); a = a * 5; printf("\nDopo l'esecuzione delle mie istruzioni il parametro passato PER VALORE vale %d\n", a); printf("\n********************* Fine funzione valore() ************************\n"); system("PAUSE"); return; } void riferimento (int *ptr) { printf("\n********************* Inizio funzione riferimento() ************************"); printf("\nSono la funzione riferimento().\nIl mio parametro FORMALE passato PER RIFERIMENTO dal main vale %d\n", *ptr); *ptr = *ptr * 3; printf("\nDopo l'esecuzione delle mie istruzioni il parametro passato PER RIFERIMENTO vale %d\n", *ptr); printf("\n********************* Fine funzione riferimento() ************************\n"); system("PAUSE"); return; }