[C] variabili globali
Inviato: sab set 11, 2004 7:26 pm
Salve,
ho la seguente variabile globale:
<font face="Courier New">
int var;
</font id="Courier New">
la seguente funzione:
<font face="Courier New">
int funz(int x) {
return x++;
}
</font id="Courier New">
e il seguente codice nel main:
<font face="Courier New">
void main() {
...
var = 1;
k = funz(var);
}
</font id="Courier New">
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
ho la seguente variabile globale:
<font face="Courier New">
int var;
</font id="Courier New">
la seguente funzione:
<font face="Courier New">
int funz(int x) {
return x++;
}
</font id="Courier New">
e il seguente codice nel main:
<font face="Courier New">
void main() {
...
var = 1;
k = funz(var);
}
</font id="Courier New">
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