Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    105

    [c++] variabile globale e locale

    ciao a tutti ho incontrato una differenza tra la guida di programmazione "c++ guida completa di apoogeo" e la pratica con il compilatore "dev c++" riguardo le variabili globali e le variabili locali, ho scritto questo codice per farvi capire:

    #include <iostream>
    using namespace std;

    void funzione();

    int main() {
    int globale=10;
    cout<<"variabile globale in main="<<globale;
    cout<<"\n";

    funzione();

    system("pause");
    return 0;
    }

    void funzione() {
    int locale=20;
    cout<<"variabile locale="<<locale;
    cout<<"\n";
    cout<<"variabile globale in funzione="<<globale; //in questa riga mi da errore
    }

    l'errore è 'variabile non dichiarata' e questo è in conflitto con la guida che dice che la variabile "globale" è utilizzabile nelle funzioni e in tutti i blocchi ({....}). questa infatti è una caratteristica che farebbe al caso mio.

    grazie
    ciao

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Hai dichiarato la variabile all'interno della main, quindi, in realta', e' locale alla main.

    Per essere globale deve stare fuori dalla main, ovvero prima della dichiarazione della funzione main.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    105
    hai ragione e corrisponde alla guida eppure a cena ho bevuto acqua :master:

    scusate se ho aperto una nuova discussione per una svista

    grazie
    buona serata

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254

    Re: [c++] variabile globale e locale

    Originariamente inviato da drinu
    ciao a tutti ho incontrato una differenza tra la guida di programmazione "c++ guida completa di apoogeo" e la pratica con il compilatore "dev c++" riguardo le variabili globali e le variabili locali, ho scritto questo codice per farvi capire:
    Variabile globale:
    - Dichiarata al di fuori di ogni funzione.
    - È allocata in modo fisso per tutta la durata del programma in un'area dati.
    - È "visibile" potenzialmente a tutte le funzioni (dipende da dove e come è dichiarata).

    Variabile locale:
    - Dichiarata dentro una funzione o anche, come caso particolare, dentro un blocco { }.
    - È allocata sullo stack.
    - È "visibile" solo all'interno della funzione o del blocco in cui è dichiarata.

    In C/C++ c'è poi un caso particolare: una variabile locale dichiarata static è visibile solo dentro la funzione ma ha durata fissa (come per le variabili globali).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    105
    grazie andbin

    ciao

  6. #6
    Utente di HTML.it L'avatar di percky
    Registrato dal
    May 2001
    Messaggi
    118
    scusate se mi intrometto, ho un problema molto simile, un programma di esemprio
    preso tra l'altro da un libro mi da problemi simili. Ecco il programma:
    #include <iostream>
    using namespace std;

    void func1();
    void func2();

    int count=0;

    int main(){
    int i;
    for(i=0; i<10; i++) {
    count=i*2;
    func1();
    }
    system("pause");
    return 0;
    }

    void func1()
    {
    cout<<"count: "<<count;
    cout<<'\n';
    func2();
    }

    void func2()
    {
    int count;
    for(count=0; count<3; count++)
    cout<<'.';
    }
    In pratica mi dice che non riconosce la variabile "count" all'istruzione "count=i*2;" inquanto secondo il compilatore non è dichiarata.
    In effetti non lo è nel main, ma è stata dichiarata prima come variabile globale.
    Tralaltro quando vado ad eseguire il programma di drinu nella sua versione corretta non ho problemi di questo tipo. Da cosa potrebbe dipendere?

    Grazie.
    Think ahead, think linux!

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Cosi' com'e' il programma viene regolarmente compilato ...

  8. #8
    Utente di HTML.it L'avatar di percky
    Registrato dal
    May 2001
    Messaggi
    118
    non da me, nel senso che ho provato con dev-c++5 e mi dice 12

    'count' undeclared (first use this function)

    anche se devo dire la verità con la versione 4 funziona, pensi dipenda dal compilatore? eppure se ci fosse un problema con la dichiarazione delle variabili globali non funzionerebbe neanche l'altro programma che invece gira correttamente.
    Think ahead, think linux!

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Non so che dirti ... secondo me e' il compilatore ... (mi pare che la 5 sia ancora beta ...).

    Comunque potrebbe dipendere dal fatto che hai usato nell'ultima funzione una variabile locale con lo stesso nome ... prova a cambiarlo ...

    Se fossi in te, non userei la versione 5 ...

  10. #10
    Utente di HTML.it L'avatar di percky
    Registrato dal
    May 2001
    Messaggi
    118
    la variabile duplicata è voluta proprio dall'esempio, per capirne la differenza. ma che tu sappia esiste la versione italiana della 4.0?
    in ogni caso grazie.
    Think ahead, think linux!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.