Domanda:
Variabili globali in C?
Dario - Joy
2012-02-02 02:47:38 UTC
Salve.
Sto creando un nuovo programma in C ma non riesco a capire una cosa.
Visto che sto usando le function mi chiedevo come faccio a rendere una variabile globale, valida quindi per entrambe le function che la usano.
Esempio:
Ho un budget dichiarato nel main in quanto viene chiesto all'utente di inserirlo.
Dal main richiamo la function acquisto e all'interno di quest'ultima definisco il decremento del budget a seconda del prodotto scelto... solo che se non dichiaro la variabile budget all'interno della function, non l'accetta (ovviamente). Come faccio a dirgli che la variabile budget sul quale deve lavorare è quella dichiarata nel main?
Cinque risposte:
anonymous
2012-02-02 03:00:25 UTC
Ciao.

Hai due modi per per risolvere il problema:



1. Usare variabili globali, vale a dire una variabile dichiarata fuori dal main(). Il main() è una funzione, e come tale, le variabili ivi dichiarate sono locali, vale a dire visibili solo all'interno di quella funzione.

Qualcosa tipo:



#include ... //dichiari librerie necessarie



int budget;



int main(void) {

...//fai quel che devi

}



In questo modo, col nome di variabile budget da qualsiasi funzione e modificarla a tuo piacimento.

Non è però il metodo migliore. Le variabili globali andrebbero evitate quando è possibile, e in questo caso lo è.



2. Funzione con passaggio di parametri.

Alle funzioni che crei puoi passare dei parametri su cui lavorare. Puoi inoltre far sì che la variabile restituisca un valore (ad esempio il valore "budget" modificato). Per far questo devi dichiarare la funzione nel modo che segue:



( ,


E poi definire la funzione. Per il valore di ritorno, alla fine del corpo della funzione devi usare l'istruzione "return " che restituisce il controllo al chiamante, e restituisce il valore che desideravi.



C'è inoltre un terzo modo di agire, col passaggio di parametri per riferimento, ovvero, invece di passare una variabile a una funzione, si passa l'indirizzo di memoria della stessa. In questo modo, la variabile passata è modificabile permanentemente (ovvero, le modifiche che apporti quando sei all'interno della funzione, continuano a esistere anche una volta che la funzione è terminata). Comunque questa questione è OT, non vado oltre, te l'ho accennata per completezza.



Spero di aver risposto alla tua domanda, ciao!
Dima
2012-02-02 11:23:59 UTC
usa un puntatore alla variabile..
V Ronin
2012-02-02 11:21:24 UTC
C Syntax:

------------

#include

void decremento(int* budget, int codice){

if (codice==1) *budget-=30;

else *budget-=10;

}

int main(){

int codice,budget=1000;

do{

printf("Inserisci il codice del prodotto da acquistare o 0 per terminare: ");

scanf("%d",&codice);

if (codice==0) break;

decremento(&budget,codice);

}while(budget>0);

return 0;

}

------------
?
2012-02-02 11:17:52 UTC
Le Variabili Globali Non Si Dichiarano Nel Main!!! Ma fuori da esso! Quindi tu dovrai dichiarare la variabile sopra il main dove ci sono i prototipi della tua funzione e fammi sapere se funziona (p.s. Funziona per forza)
?
2012-02-02 10:51:18 UTC
guarda questo


Questo contenuto è stato originariamente pubblicato su Y! Answers, un sito di domande e risposte chiuso nel 2021.
Loading...