Alcune domande sull'inizializzazione delle variabili

0

Sono in un corso introduttivo di programmazione e siamo solo nella seconda lezione, quindi cerca di mantenere la terminologia semplice, ah.

Sono un po 'confuso su quando è necessario e quando non è necessario inizializzare una variabile.

Il mio libro dice che l'inizializzazione è quando assegni un valore a una variabile dopo che è stata dichiarata.

In seguito ho guardato il mio pdf di lingua campione e mostrava solo valori inizializzati quando non chiedevamo un utente.

Ha dimostrato che se volessimo mostrare il nostro nome, la nostra età e i nostri dollari, tutto ciò che abbiamo messo sono dichiarazioni inizializzate.

Tuttavia, se volessimo conoscere le informazioni dell'utente relative ai valori, non c'era alcuna dichiarazione inizializzata: solo quelle dichiarative.

Dimmi se sto interpretando male questo. link link

Se sono corretto, qualcuno può spiegare quali sono i vantaggi di inizializzare i valori e perché le variabili non inizializzate causano comunemente errori logici?

Il mio libro dice anche che in molte lingue i valori dei valori non inizializzati contengono valori imprevedibili; questo è dovuto a quei linguaggi che mettono da parte un posto in memoria per la variabile, ma non alterano il contenuto di quel luogo in memoria.

Qualcuno potrebbe forse dirlo in un modo diverso?

    
posta FBHSIE 10.06.2016 - 21:51
fonte

3 risposte

5

In linguaggi come C, le variabili appena dichiarate puntano essenzialmente a una locazione di memoria casuale (più o meno). Se dichiari la variabile anche senza inizializzarla, conterrà qualsiasi valore casuale che la memoria contiene nella posizione in memoria a cui punta la nuova variabile. * L'uso della variabile in questo stato causerà un comportamento imprevedibile.

Assegnare un valore alla variabile significa che la posizione della memoria è impostata sul valore che hai assegnato, in modo che tu e il tuo programma abbiate ora un'aspettativa su cosa contiene quella variabile.

* Questa descrizione è volutamente semplificata. Il tuo chilometraggio effettivo può variare.

    
risposta data 10.06.2016 - 22:12
fonte
0

Sono d'accordo con la risposta selezionata sopra, per andare un po 'oltre.

Puoi dichiarare le variabili - nel senso di creare una variabile dandole un tipo e un nome.

Esempio: int number_of_cats;

L'inizializzazione può essere eseguita contemporaneamente alla dichiarazione perché vuoi iniziare con quanti gatti hai mai al momento.

Esempio: int number_of_cats = 2;

Dì che vuoi comprare un gatto ogni anno per i prossimi 10 anni. Inizializzerai la tua variabile su 2 e ne aggiungerai 1 ogni anno per 10 anni. Questo è chiamato una variabile di accumulo che è molto probabile che imparerai in seguito. È una buona idea inizializzare le variabili in modo che tu possa facilmente rilevare se qualcosa va storto nel codice quando ottieni un valore nella variabile che non ti aspetti!

    
risposta data 14.06.2016 - 06:10
fonte
0

Fino a quando non lo saprai, segui le sempre inizializzazione delle variabili.

My book also says in many languages uninitialized values values hold unpredictable values; this is due to those languages setting aside a place in memory for the variable, but not altering the contents of that place in memory.

Tutti i valori sono conservati in memoria; piccole "patch" di semi-conduttore da qualche parte nei chip RAM del computer. Una variabile è un modo per dare un "nome" a [una] qualsiasi di quelle patch. Dichiarare una variabile dice al compilatore, "Userò questo bit di memoria per un valore di [tipo di dati] tutto mio e lo chiamerò George."

In linguaggi come "C", che ha nessun effetto sull'area della memoria in questione. Quel particolare pezzo di memoria potrebbe essere stato usato per qualcosa di completamente diverso solo pochi [milli] secondi prima e potrebbe contenere assolutamente nulla . Non che "C" si lamenterà di questo, necessariamente; quando provi a usa la variabile "George", il tempo di esecuzione "C" proverà a interpretare qualsiasi cosa trovi nella posizione di memoria identificata da "George" come qualunque tipo di dati pensi che dovrebbe essere. Se è un tipo Integer, funzionerà sempre, ma come risultato otterrai tutti i tipi di numeri strani.

                      +-------------+ 
(int32) "George"  ->  | 12 34 56 78 | 
                      +-------------+ 
? George 
305419896

L'inizializzazione della variabile "George" spinge un valore noto in quel pezzo di memoria, in modo che quello che leggi, è ciò che ti aspetti che sia.

                           +-------------+ 
(int32) "George" = 3   ->  | 00 00 00 03 | 
                           +-------------+ 
? George 
3

Più i tuoi tipi di dati diventano complessi, più estrema è la reazione che il tempo di esecuzione ha a questi strani valori non inizializzati.

    
risposta data 14.06.2016 - 13:18
fonte

Leggi altre domande sui tag