Punto informatico Network
Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

[C] variabili globali

Il forum per tutti i developer. Leggere attentamente il regolamento di sezione prima di postare.

[C] variabili globali

Messaggioda mciasco » 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
Avatar utente
mciasco
Senior Member
Senior Member
 
Messaggi: 151
Iscritto il: ven apr 09, 2004 2:15 am

Messaggioda Xerex » dom set 12, 2004 7:17 pm

<blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">citazione:<hr height="1" noshade id="quote"><i>Messaggio inserito da mciasco</i>
Vorrei alcune delucidazioni.
1)in teoria essendo "var" globale potevo non passarla alla funzione "funz" e semplicemente richiamarla dìlì dentro giusto?
<hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote">
Giusto, ma in quel modo perderesti l'utilità di usare funzioni
<blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">citazione:<hr height="1" noshade id="quote">
2)"k" dovrebbe contenere 2, giusto?
<hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote">
giusto.
<blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">citazione:<hr height="1" noshade id="quote">
3)"var" dovrebbe contenere 2 o 1?
<hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote">
var, sia prima che dopo la chiamata contiene 1.

<blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">citazione:<hr height="1" noshade id="quote">
.... 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?
<hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote">

Il problemaè che il C utilizza il passaggio di parametri per valore, ovvero non c'è nessuna relazione tra il parametro attuale(var) e il parametro formale(x).

Per fare in modo che il valore di var venga modificato attraverso il formale x, devi utilizzare il passaggio di paramentri per riferimento che in C puoi simulare attraverso il passaggio alla funzione dell'indirizzo della variabile.

spero di essere stato esauriente
Ciao
Avatar utente
Xerex
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 5948
Iscritto il: lun ago 05, 2002 9:36 am
Località: Parma(Pr)


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti

Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising