Video: Corso #5 di programmazione C - Gli Array ed esercizi 2024
Nella programmazione C, il tipo e la dimensione di una variabile vengono scoperti per primi dichiarando tale variabile come un tipo specifico, ma anche usando la parola chiave sizeof. La seconda descrizione di una variabile, il suo contenuto, può essere ricavata leggendo il valore della variabile usando la funzione del linguaggio C appropriata.
La terza descrizione di una variabile è la sua posizione nella memoria. Raccogli queste informazioni utilizzando l'operatore & e il segnaposto% p, come mostrato in O Variabile, perché sei?
O VARIABILE, QUINDI ARTE QUI?
#include int main () {char c = 'c'; int i = 123; flottante f = 98. 6; doppia d = 6. 022E23; printf ("Indirizzo di 'c'% pn", & c); printf ("Indirizzo di 'i'% pn", & i); printf ("Indirizzo di 'f'% pn", & f); printf ("Indirizzo di 'd'% pn", & d); return (0);}
Quando l'operatore & esegue il prefisso di una variabile, restituisce un valore che rappresenta l'indirizzo della variabile, o la sua posizione nella memoria. Quel valore è espresso in esadecimale. Per visualizzare quel valore, viene utilizzato il carattere di conversione% p, come mostrato in O Variabile, perché sei?
Esercizio 1 : Digitare il codice sorgente da O Variabile, perché sei? nel tuo editor. Costruisci ed esegui.
I risultati prodotti dal programma generato dall'esercizio 1 sono unici, non solo per ciascun computer ma anche, potenzialmente, per ogni volta che viene eseguito il programma.
Indirizzo di 'c' 0x7fff5fbff8ff Indirizzo di 'i' 0x7fff5fbff8f8 Indirizzo di 'f' 0x7fff5fbff8f4 Indirizzo di 'd' 0x7fff5fbff8e8
Variabile c è memorizzato nella posizione 0x7fff5fbff8ff - questa è la posizione decimale 140, 734, 799, 804, 671. Entrambi i valori sono banali, naturalmente; il computer tiene traccia delle posizioni di memoria, il che va bene per me.
Questa illustrazione mostra come questi indirizzi vengono visualizzati in memoria.
I singoli elementi dell'array hanno anche posizioni di memoria, come mostrato in posizioni di memoria in una matrice sulla linea 10. L'operatore & esegue il prefisso della specifica variabile elemento, tossendo su un indirizzo. Il carattere di conversione% p nella funzione printf () visualizza l'indirizzo.
LOCALIZZAZIONI DI MEMORIA IN UN ARRAY
#include int main () {char hello [] = "Hello!"; int i = 0; while (ciao [i]) {printf ("% c in% pn", ciao [i], e ciao [i]); i ++;} return (0);}
Exercise 2 : Crea un nuovo progetto usando il codice sorgente mostrato in Memory Positions in una matrice. Costruisci ed esegui.
Anche in questo caso, l'uscita della posizione di memoria è unica su ciascun computer.
H a 0x7fff5fbff8f0 e a 0x7fff5fbff8f1 l a 0x7fff5fbff8f2 l a 0x7fff5fbff8f3 o a 0x7fff5fbff8f4!a 0x7fff5fbff8f5
Diversamente dall'esempio dell'esercizio 1, gli indirizzi generati dall'esercizio 2 sono contigui in memoria, un byte dopo l'altro.
Esercizio 3 : Codifica un programma per visualizzare cinque valori in un array int insieme all'indirizzo di memoria di ciascun elemento. È possibile utilizzare le posizioni memoria in una matrice per ispirare, anche se un ciclo for potrebbe essere più semplice da codificare.
-
A proposito, l'operatore di localizzazione e memoria dovrebbe esserti familiare. Viene utilizzato dalla funzione scanf (), che richiede l'indirizzo di una variabile, non la variabile stessa. Questo perché scanf () colloca direttamente un valore in una posizione di memoria. Come? Usando i puntatori, ovviamente!
-
L'operatore & è anche l'operatore AND bit a bit; tuttavia, il compilatore è abbastanza intelligente da dire quando e prefigura una variabile e quando è parte di un'equazione matematica binaria.