C - Regole di ambito

Uno scope in qualsiasi programmazione è una regione del programma in cui una variabile definita può avere la sua esistenza e oltre quella variabile non è possibile accedervi. Ci sono tre posti in cui le variabili possono essere dichiarate nel linguaggio di programmazione C:

  • All'interno di una funzione o di un blocco che viene chiamato local variabili.

  • Al di fuori di tutte le funzioni che viene chiamato global variabili.

  • Nella definizione dei parametri di funzione che vengono chiamati formal parametri.

Facci capire cosa sono local e global variabili e formal parametri.

Variabili locali

Le variabili dichiarate all'interno di una funzione o di un blocco sono chiamate variabili locali. Possono essere utilizzati solo da istruzioni che si trovano all'interno di quella funzione o blocco di codice. Le variabili locali non sono note a funzioni esterne alla propria. L'esempio seguente mostra come vengono utilizzate le variabili locali. Qui tutte le variabili a, b e c sono locali rispetto alla funzione main ().

#include <stdio.h>
 
int main () {

  /* local variable declaration */
  int a, b;
  int c;
 
  /* actual initialization */
  a = 10;
  b = 20;
  c = a + b;
 
  printf ("value of a = %d, b = %d and c = %d\n", a, b, c);
 
  return 0;
}

Variabili globali

Le variabili globali sono definite al di fuori di una funzione, solitamente nella parte superiore del programma. Le variabili globali mantengono i loro valori per tutta la durata del programma ed è possibile accedervi all'interno di una qualsiasi delle funzioni definite per il programma.

È possibile accedere a una variabile globale da qualsiasi funzione. Cioè, una variabile globale è disponibile per l'uso in tutto il programma dopo la sua dichiarazione. Il seguente programma mostra come le variabili globali vengono utilizzate in un programma.

#include <stdio.h>
 
/* global variable declaration */
int g;
 
int main () {

  /* local variable declaration */
  int a, b;
 
  /* actual initialization */
  a = 10;
  b = 20;
  g = a + b;
 
  printf ("value of a = %d, b = %d and g = %d\n", a, b, g);
 
  return 0;
}

Un programma può avere lo stesso nome per le variabili locali e globali, ma il valore della variabile locale all'interno di una funzione avrà la precedenza. Ecco un esempio:

#include <stdio.h>
 
/* global variable declaration */
int g = 20;
 
int main () {

  /* local variable declaration */
  int g = 10;
 
  printf ("value of g = %d\n",  g);
 
  return 0;
}

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

value of g = 10

Parametri formali

I parametri formali sono trattati come variabili locali con una funzione in-in e hanno la precedenza sulle variabili globali. Di seguito è riportato un esempio:

#include <stdio.h>
 
/* global variable declaration */
int a = 20;
 
int main () {

  /* local variable declaration in main function */
  int a = 10;
  int b = 20;
  int c = 0;

  printf ("value of a in main() = %d\n",  a);
  c = sum( a, b);
  printf ("value of c in main() = %d\n",  c);

  return 0;
}

/* function to add two integers */
int sum(int a, int b) {

   printf ("value of a in sum() = %d\n",  a);
   printf ("value of b in sum() = %d\n",  b);

   return a + b;
}

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

value of a in main() = 10
value of a in sum() = 10
value of b in sum() = 20
value of c in main() = 30

Inizializzazione delle variabili locali e globali

Quando una variabile locale è definita, non viene inizializzata dal sistema, è necessario inizializzarla da soli. Le variabili globali vengono inizializzate automaticamente dal sistema quando vengono definite come segue:

Tipo di dati Valore predefinito iniziale
int 0
char "\ 0"
galleggiante 0
Doppio 0
puntatore NULLO

È una buona pratica di programmazione inizializzare le variabili correttamente, altrimenti il ​​programma potrebbe produrre risultati imprevisti, perché le variabili non inizializzate assumeranno un valore di spazzatura già disponibile nella loro posizione di memoria.