Ciao Bentornato.
In questa conferenza, voglio parlare sulle variabili locali e globali.
Questo è davvero il concetto di funzione ambito o nell'ambito generale del programma.
Ha a che fare con quando puoi usare le variabili e
quando non puoi usarle.
Sappiamo quali sono le funzioni.
Quindi ora voglio parlare sulle variabili locali.
Le variabili locali hanno davvero a che fare con più di semplici funzioni però.
Le variabili locali hanno a che fare con tutto ciò che ha un blocco di codice.
Quindi variabili definite all'interno di una funzione sono note
come variabili locali automatiche.
Quindi in quel corpo funzione, nel mezzo quelle parentesi iniziali
e finali, se dichiari una variabile, quella variabile è una variabile locale.
Verrà creato automaticamente ogni volta che viene chiamata la funzione.
Inoltre, tutti i valori in l'accesso a quella variabile è solo locale
per la funzione.
Non puoi accedere a quella variabile al di fuori di quella funzione.
Quindi non è possibile accedere alla variabile in altre funzioni se è
locale per una funzione specifica.
È accessibile solo da dove è definito.
Se viene fornito un valore iniziale a una variabile
all'interno di una funzione, quel valore iniziale è assegnato alla variabile ogni volta che
viene chiamata la funzione.
Se vuoi mantenere un valore in una variabile ogni chiamata successiva, in realtà c'è
un modo per farlo in c, viene chiamata indicata come variabile
statica all'interno di una funzione.
Questo è, ancora una volta, più avanzato concetto non in
una classe per principianti, ma è un modo che puoi in realtà hanno
dati diversi ogni volta che si invocano funzioni.
Quindi, ad esempio, se volessi mantenere un contatore di quante volte è stata chiamata una funzione,
dichiareresti un file variabile locale all'interno di quel nome di funzione
static, con una parola chiave static.
Ma senza solo regolare le variabili locali avranno
nuovi valori ogni volta.
Puoi usare la parola chiave auto prima il tipo di dati, ma non è necessario.
Lo rende un file un po 'più preciso.
Il compilatore lo aggiungerà entro predefinito se non lo includi.
Ma se lo includi, lo è
solo per renderlo più preciso, non è necessario.
Quindi si chiama un file variabile locale automatica.
C'è una parola chiave denominata auto in c, ma non è necessario fornire che sia
fornito di default, ed è per questo non lo vedi in molti esempi in
cui le variabili vengono definite e dichiarato all'interno di una funzione.
Le variabili locali sono applicabili anche a qualsiasi codice in cui la variabile viene creata
in un blocco, cicli o istruzioni if.
Di nuovo, se hai un'istruzione if in cos'è un blocco per un'istruzione if, è
solo dove iniziano le parentesi.
Viene definito blocco.
I blocchi possono essere in funzioni, i blocchi possono essere istruzioni if, i
blocchi possono essere in cicli.
I blocchi possono essere ovunque ci sono le parentesi, essenzialmente.
Ovunque ci siano parentesi e tu crei quella variabile.
La creazione della variabile sta dichiarando e magari assegnandogli dei valori.
Ma se dichiari quella variabile, crei quella variabile all'interno
di un blocco, puoi solo usare quella variabile all'interno del blocco.
Se provi ad accedervi variabile al di fuori del blocco,
non verrà utilizzata.
Quindi, se hai una dichiarazione if, all'interno dell'istruzione if dichiari
una variabile, puoi accedere quella variabile al di fuori del blocco di istruzioni if,
lo stesso vale per i cicli.
È molto importante per capirlo.
Il compilatore si lamenterà e ti danno un errore se provi
ad accedervi da qualche altra parte.
E ciò significa che il file i valori nei dati sono
applicabili solo a quel blocco.
Non stai condividendo alcun dato.
Le variabili globali sono le opposto di una variabile locale.
È possibile accedere alle variabili globali da qualsiasi funzione nel programma.
Il modo in cui crei un file globale variabile è che lo metti in alto
al di fuori di qualsiasi funzione.
Quindi vengono dichiarate le variabili globali al di fuori della funzione e non
appartengono a nessuna funzione.
Ricorda, la parola chiave principale il principale è una funzione.
Quindi qualsiasi variabile definita in le funzioni principali sono accessibili
solo nella funzione principale.
Quindi le variabili principali non sono accessibili in
altre funzioni.
Se vuoi una variabile che è usato da tutte le funzioni, metti la variabile al
di fuori di una funzione, di solito all'inizio del file sorgente
e di solito contrassegnarlo come dicendo che questa è una variabile globale.
La variabile globale è una bugia l'intero programma da quando il programma inizia
a quando si ferma, quella variabile globale si
troverà in memoria.
Qualsiasi funzione nel programma può cambiare il valore di quella variabile globale perché hanno accedendovi,
possono modificarlo.
E quindi dovresti iniziare a pensare su wow che sembra un po 'pericoloso perché ora lo
hai codice che può accedere agli stessi dati
ovunque, ma ci arriveremo.
Se è presente una variabile locale dichiarata in
una funzione con lo stesso nome di una variabile globale, quindi quello la funzione utilizzerà la variabile locale,
maschererà la variabile globale.
Quindi, se hai una variabile globale denominata x e hai una variabile
locale chiamata x all'interno di una funzione, la local la variabile avrà la precedenza.
Non cambierà i dati delle variabili globali.
Se assegni a quello variabile, modificherà
solo la variabile locale.
Quindi la variabile globale non lo è accessibile quando hai lo
stesso nome, e in realtà non lo sarà essere accessibile all'interno di
quella funzione locale, quindi non usare lo stesso fondamentalmente
perché creerà confusione.
Per le persone che hanno programmato molto, i programmatori avanzati
se ne sono accorti immediatamente.
Diranno ehi solo questo agisce sta solo modificando la variabile
locale anche se vedono un file verbo globale con lo stesso nome.
Ma per i principianti, lo è non sempre molto chiaro.
Lasciate che vi faccia un esempio.
Qui in questo esempio, siamo creando una variabile globale in
alto prima della funzione principale.
E il modo in cui vuoi organizzarti il tuo programma di
solito include le dichiarazioni all'inizio dopo alcune commenti forse, e poi potresti avere alcune costanti
definite e poi tu avrebbe le tue variabili globali.
Le variabili globali sembrano giuste come le variabili normali.
È solo dove sono effettivamente dichiarato.
Se vengono dichiarati al di fuori di una funzione, quindi sono globali.
Quindi in questo esempio, abbiamo un file variabile globale chiamata my global.
Lo stiamo inizializzando a 0.
Possiamo anche inizializzarli variabili globali ovunque.
Possiamo inizializzarli quando li dichiariamo o possiamo
inizializzarli in qualsiasi funzione.
È un numero intero.
Abbiamo anche due funzioni, la funzione principale in una
funzione chiamata my function.
Là dentro abbiamo locale variabili che sono accessibili solo
all'interno di tali funzioni.
Nella funzione principale, abbiamo un mio principale locale.
Puoi accedere solo al mio locale principale all'interno della funzione principale.
Ma perché il mio globale è una variabile è globale, puoi anche accedervi
nella funzione principale.
Quindi il principale può accedere a due variabili, il locale e il globale.
E la mia funzione ha una variabile locale denominato x perché è dichiarato
all'interno delle parentesi del corpo della funzione e possiamo effettivamente accedere alla variabile globale che
è la mia globale.
Possiamo anche accedere a x, ma non possiamo accedere al mio locale.
Il mio principale locale dovrei dire.
Perché il mio principale locale è solo all'interno della funzione principale.
Non abbiamo accesso a quello.
Se proviamo a scrivere o leggere il mio variabile principale locale all'interno
della funzione my, il compilatore è ti darà un errore.
Devi capire questo concetto di locale contro globale.
I locali sono all'interno di blocchi di codice.
Quando vengono dichiarati, puoi usali solo nel blocco.
Se una variabile è al di fuori di un blocco ed è solo in una funzione o
è solo in un programma stesso, puoi accedervi in qualsiasi funzione.
Le variabili globali dovrebbero essere evitate.
Le variabili globali sono una specie di brutta cosa.
La ragione per loro per globale le variabili sono cattive e il motivo
per cui dovresti evitarle è perché promuove l'accoppiamento tra le funzioni.
Cosa significa accoppiamento?
Accoppiamento significa dipendenze.
Se hai una variabile globale ed è
utilizzato da quattro funzioni, ovvero ognuna di queste funzioni potrebbe
dipendere dall'altra funzione.
Cosa c'è di sbagliato nella dipendenza?
La dipendenza fa sì che un programma sia molto più difficile eseguire il debug e trovare errori.
Se hai un bug nel tuo programma e stai usando una variabile
globale e la variabile globale sta causando il bug, ora quel bug potrebbe essere
ovunque in qualsiasi funzione che sia utilizzando quella variabile globale.
Complica le cose quando hai dati globali.
Hai una variabile globale, potrebbe essere modificato nella funzione uno, funzione
due, funzione tre, funzione quattro.
Non stai limitando l'accesso a quello. È anche molto difficile una volta trovato
l'errore e se lo isolate, potrebbe essere
molto difficile risolverlo.
Perché ora quando lo aggiusti, puoi causare problemi in altre funzioni a
causa di queste dipendenze.
Le variabili globali dovrebbero essere evitato il più possibile a
causa di questo accoppiamento, a causa di queste dipendenze.
Ci sono momenti in cui potresti aver bisogno per usarlo, ma dovresti evitarlo.
E da tenere a mente di più linguaggi moderni nella maggior parte dei linguaggi
orientati agli oggetti come il c ++ e java, non hanno nemmeno
il concetto di variabile globale.
Hanno variabili statiche che possono essere variabili di classe, ma sono ancora
incapsulate all'interno di una classe.
Perché i dati globali sono tali una brutta cosa, le nuove lingue
cercano effettivamente di proibire.
E dovresti cercare di evitare perché complica solo il tuo programma
e lo fa più difficile trovare ed eseguire il debug degli errori.
Invece di usare global dati, passare i dati alle funzioni.
Se una funzione necessita di accesso ad alcuni dati, passaglielo.
Se - se sono molti dati e tu no vuoi avere molti parametri, in
teoria, non dovresti mai davvero avere più di cinque parametri.
C'è un grande libro là fuori chiamato Codice pulito che parla della qualità
del codice e delle cose da evitare cose da evitare come le variabili globali.
Parla anche di come molti parametri che dovresti
avere nelle tue funzioni.
E se una funzione ha 20 parametri, è un'indicazione che qualcosa non va,
principalmente a causa di quella funzione probabilmente sta facendo troppo.
Ma una funzione può avere accesso ai dati semplicemente passandogli i dati e puoi limitare
l'uso dei dati globali.
E per una funzione che richiede molto data, puoi usare
qualcosa chiamato struct di cui non abbiamo parlato ma questo è un altro modo per farlo.
Quindi non utilizzare così tanto i dati globali possibile solo quando necessario.
Assicurati di aver compreso il codice.
Assicurati di documentare davvero, davvero bene.
In modo che qualcun altro stia cercando al codice
sa immediatamente che stai utilizzando dati globali e sa come funziona tutto.
Questo è il concetto di ambito della funzione.
Dovresti aver bisogno di capire questo, quindi presta attenzione a tutte queste diapositive.
E ne useremo anche alcuni dati globali e alcuni dati locali
nella nostra prossima sfida. Grazie.