PDA

Visualizza la versione completa : [C] variabili globali


mciasco
11-09-2004, 20:36
Salve,

ho la seguente variabile globale:



int var;


la seguente funzione:

int funz(int x) {
return x++;
}

e il seguente codice nel main:

void main() {
...
var = 1;
k = funz(var);
...
}


Vorrei alcune delucidazioni.
1)in teoria essendo "var" globale potevo non passarla alla funzione "funz" e semplicemente richiamarla dýlý dentro giusto?

2)"k" dovrebbe contenere 2, giusto?

3)"var" dovrebbe contenere 2 o 1?

La vera domanda Ŕ appunto al 3. Io sapevo che quando si dichiara una variabile globale, tutte le funzioni o blocchi che ne fanno uso non ne creano un'istanza locale ma di isatnza ne esiste solo una. Quindi nel caso precedente "var" viene aumentata di 1 dentro "funz" ma ci˛ vale per l'unica istanza esistente di "var" quindi la stessa "var" diventerÓ 2! O no? Sto sbagliando io? Le variabili globali sono semplicemente visibili a tutto il file ma ogni funzione se ne crea un'stanza locale?

grazie

/dev/null
11-09-2004, 20:46
Originariamente inviato da mciasco
Vorrei alcune delucidazioni.
1)in teoria essendo "var" globale potevo non passarla alla funzione "funz" e semplicemente richiamarla dýlý dentro giusto?Piu' o meno (leggi dopo)


2)"k" dovrebbe contenere 2, giusto?Esatto


3)"var" dovrebbe contenere 2 o 1?

La vera domanda Ŕ appunto al 3. Io sapevo che quando si dichiara una variabile globale, tutte le funzioni o blocchi che ne fanno uso non ne creano un'istanza locale ma di isatnza ne esiste solo una. Quindi nel caso precedente "var" viene aumentata di 1 dentro "funz" ma ci˛ vale per l'unica istanza esistente di "var" quindi la stessa "var" diventerÓ 2! O no? Sto sbagliando io? Le variabili globali sono semplicemente visibili a tutto il file ma ogni funzione se ne crea un'stanza locale?1...
Poiche' alla funzione non viene passata la variabile var, ma viene passato il valore della variabile var...
Dentro quella funzione non incrementi realmente var, ma incrementi la variabile x che ha il valore di var, ma nonostante cio' x non e' var, ha solo il suo valore...
Se te invece che passare var alla funzione, usi var direttamente nella funzione, in quel caso varrebbe 2...

:ciauz:





PS:
NON USARE VARIABILI GLOBALI!!!
A meno che non siano indispensabilmente indispensabili! :D

Loading