PDA

View Full Version : [C++]: variabili globali e locali: dubbio


vermaccio
14-03-2006, 13:10
avendo un listato semplice semplice con il main e con 2 funzioni:


#include <stdio.h>
#include <math.h>

double x

static void primafunzione(void) {
x=1;
}

static int secondafunzione (int ms) {
x=x+1;
}

int main() {
viene attivata la funzione "primafunzione"
viene attivata la funzione "secondafunzione"
return 0;
}


domanda1: x è una variabile globale perchè definita come "double x" subito dopo gli #include e fuori da ogni funzione?

domanda2: la "x" settata ad un valore nella "primafunzione" è globale o locale?

domanda3:la "x" aumentata di un unità nella "secondafunzione" è globale o locale?

insomma: un programma così fatto a fine esecuzione vede:

a)x senza valore preciso
b)x=1
c)x=2
?

ilsensine
14-03-2006, 13:22
domanda1: x è una variabile globale perchè definita come "double x" subito dopo gli #include e fuori da ogni funzione?
Potresti anche metterla prima degli include se vuoi, non cambia nulla (si usa però iniziare il sorgente con l'elenco degli header). E' globale perché definita fuori dalle funzioni, e visibile da entrambe.

domanda2: la "x" settata ad un valore nella "primafunzione" è globale o locale?

domanda3:la "x" aumentata di un unità nella "secondafunzione" è globale o locale?
Le scritture avvengono esclusivamente sulla variabile globale x, l'unica "x" che le due funzioni "vedono".


insomma: un programma così fatto a fine esecuzione vede:

a)x senza valore preciso
b)x=1
c)x=2
?
Sì.
Nota che alcuni compilatori pongono a 0 le variabili globali non inizializzate.

andbin
14-03-2006, 13:35
domanda1: x è una variabile globale perchè definita come "double x" subito dopo gli #include e fuori da ogni funzione?Gli include non centrano (non che sia bello ma potresti mettere double x; anche prima degli include!). È globale perché è al di fuori di ogni funzione.
domanda2: la "x" settata ad un valore nella "primafunzione" è globale o locale?

domanda3:la "x" aumentata di un unità nella "secondafunzione" è globale o locale?Sì, se nelle funzioni non hai un'altra variabile (locale o un parametro della funzione) di nome 'x' (che "nasconderebbe" il valore della variabile globale), la variabile globale è visibile dappertutto a partire dal punto in cui è dichiarata.