/* File: scope.c */ /* Time-stamp: "2002-04-03 13:21:36 calvanes" */ /* Scopo: esemplificare le regole di visibilita` in C */ #include /* variabili globali */ int i = 1, j = 2, k = 3; // prototipo funzione void Q (void); // main int main(void) { /* sono visibili: - int i - variabile globale - int j - variabile globale - int k - variabile globale - Q - funzione - main - funzione */ printf ("MAIN - prima della chiamata alla funzione Q() \n"); printf ("valore variabili:\t\ti = %d, j = %d, k = %d\n", i, j, k); system("PAUSE"); Q(); printf ("MAIN - dopo la chiamata alla funzione Q() \n"); printf("valore variabili:\t\ti = %d, j = %d, k = %d\n", i, j, k); system("PAUSE"); return; } // funzione Q void Q(void) { int i = 4; { /* blocco interno a Q */ int j = 8; int k = 0; /* sono visibili esattamente: - int j - variabile locale - int i - variabile non-locale (non quella globale) - int k - variabile locale - Q - funzione */ printf("\n\nFUNZIONE Q - nel blocco:\ti = %d, j = %d, k = %d\n", i, j, k); } /* sono visibili: - int i - variabile locale - int j - variabile globale - int k - variabile globale - Q - funzione */ printf("FUNZIONE Q - fuori blocco: \ti = %d, j = %d, k = %d \n\n\n", i, j, k); return; } /* Q */