Visualizzazione dei risultati da 1 a 2 su 2

Discussione: [C] variabili globali

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    69

    [C] variabili globali

    Salve,

    ho la seguente variabile globale:


    codice:
    int var;

    la seguente funzione:
    codice:
    int funz(int x) { 
       return x++; 
    }
    e il seguente codice nel main:
    codice:
    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

  2. #2
    Utente di HTML.it L'avatar di /dev/null
    Registrato dal
    May 2004
    Messaggi
    1,936

    Re: [C] variabili globali

    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...







    PS:
    NON USARE VARIABILI GLOBALI!!!
    A meno che non siano indispensabilmente indispensabili!
    Ultima modifica ad opera dell'utente /dev/null il 01-01-0001 alle 00:00

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 © 2025 vBulletin Solutions, Inc. All rights reserved.