Home   Informatica   C   2.1 - Visibilità

2.1 - Visibilità

Scritto da sergio il 09/09/2022 12:22:28

Un aspetto molto importante, non solo per il C, ma per tutti i linguaggi di programmazione, è capire bene la visibilità delle variabili all'interno delle singole porzioni di codice (tra cui appunto, le funzioni).
Nell'esempio qui sotto vediamo definite 3 funzioni (a, b e c) e dichiarata una variabile "globale" (x). Queste dichiarazioni vengono inserite prima (e fuori) del metodo "main".
Nella main è poi definita un'altra variabile x che questa volta è "locale" (locale del metodo main), viene inserita una porzioni di codice all'interno di parentesi graffe, stabilendo una nuova "visibilità".
Infine viene di nuovo definita una variabile x all'interno dell'implementazione delle funzioni.
Enjoy!

Code:

/* Un esempio di visibilità */
#include <stdio.h>

void a(void);
void b(void);
void c(void);

int x = 1;  // Variabile Globale

main()
{
      int x = 5;  // Variabil Locale
      printf("Variabile Locale x in tutta main(): %d\n", x);
      
      {    // Porzione con nuova visibilità
          int x = 7;
          printf("Variabile Locale x in una porzione di main(): %d\n", x);
      }
      
      printf("Variabile Locale x in tutta main(): %d\n", x);
      
      a();  // var x locale automatica
      b();  // var x locale statica
      c();  // usa la var x globale
      a();  
      b();
      c();
      
      printf("Variabile Locale x nella main(): %d\n", x);
      return 0;
}

void a(void)
{
     int x = 25;
     printf("\nVariabile Locale x e' %d alla chiamata di a\n", x);
     ++x;
     printf("Variabile Locale x e' %d all'uscita da a\n", x);
}

void b(void)
{
     static int x = 50;
     printf("\nVariabile Locale Statica x e' %d alla chiamata di b\n", x);
     ++x;
     printf("Variabile Locale Statica x e' %d all'uscita da b\n", x);
}

void c(void)
{
     printf("\nVariabile Globale x e' %d alla chiamata di c\n", x);
     x *= 10;
     printf("Variabile Globale x e' %d all'uscita da c\n", x);
}

Ultimo aggiornamento 09/09/2022 12:26:15