Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Riferimenti e Dereferenziazioni | Puntatori
Fondamenti Di C

bookRiferimenti e Dereferenziazioni

I puntatori si basano su due operatori:

  • L'operatore di indirizzo &.
  • L'operatore di dereferenziazione *.

Operatore di indirizzo

L'operatore di indirizzo, rappresentato da &, consente di interagire direttamente con la RAM del computer. Utilizzando & si ottiene il vero indirizzo di memoria di un oggetto.

Main.c

Main.c

copy
123456789101112
#include <stdio.h> int main() { int x = 100; printf("Value of variable: %d\n", x); printf("Address of variable into RAM: %p\n", &x); // using reference operator `&` for getting address return 0; }
Note
Nota

Lo specificatore di formato utilizzato per stampare indirizzi (puntatori) è %p.

Gli indirizzi sono generalmente espressi in notazione esadecimale.

Operatore di Dereferenziazione

Al contrario, l'operatore * restituisce il nome del residente quando viene fornito il suo indirizzo. Quindi, come possiamo utilizzare questo operatore se non stiamo lavorando direttamente con gli indirizzi? Se si dispone di un'espressione come &x, che restituisce l'indirizzo della variabile x, applicando l'operatore * a questa (*&x) si ottiene il valore della variabile memorizzata a quell'indirizzo.

Note
Nota

Fondamentalmente, *&x è lo stesso di x.

Main.c

Main.c

copy
1234567891011121314
#include <stdio.h> int main() { int x = 100; printf("Value of variable: %d\n", x); printf("Address of variable in RAM: %p\n", &x); // using reference operator `&` printf("Dereferencing address of variable: %d", *(&x)); // using dereference operator `*` return 0; }
Note
Nota

Non confondere l'operatore di dereferenziazione (*x) con l'operatore di moltiplicazione (x*y).

Compito

Swipe to start coding

  • Creare un array di interi di 5 elementi e popolarlo.
  • Recuperare l'indirizzo del terzo elemento.
  • Incrementare l'indirizzo del terzo elemento e dereferenziare l'indirizzo incrementato per stampare il valore a cui punta.

Soluzione

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 6. Capitolo 2
single

single

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

close

Awesome!

Completion rate improved to 2.63

bookRiferimenti e Dereferenziazioni

Scorri per mostrare il menu

I puntatori si basano su due operatori:

  • L'operatore di indirizzo &.
  • L'operatore di dereferenziazione *.

Operatore di indirizzo

L'operatore di indirizzo, rappresentato da &, consente di interagire direttamente con la RAM del computer. Utilizzando & si ottiene il vero indirizzo di memoria di un oggetto.

Main.c

Main.c

copy
123456789101112
#include <stdio.h> int main() { int x = 100; printf("Value of variable: %d\n", x); printf("Address of variable into RAM: %p\n", &x); // using reference operator `&` for getting address return 0; }
Note
Nota

Lo specificatore di formato utilizzato per stampare indirizzi (puntatori) è %p.

Gli indirizzi sono generalmente espressi in notazione esadecimale.

Operatore di Dereferenziazione

Al contrario, l'operatore * restituisce il nome del residente quando viene fornito il suo indirizzo. Quindi, come possiamo utilizzare questo operatore se non stiamo lavorando direttamente con gli indirizzi? Se si dispone di un'espressione come &x, che restituisce l'indirizzo della variabile x, applicando l'operatore * a questa (*&x) si ottiene il valore della variabile memorizzata a quell'indirizzo.

Note
Nota

Fondamentalmente, *&x è lo stesso di x.

Main.c

Main.c

copy
1234567891011121314
#include <stdio.h> int main() { int x = 100; printf("Value of variable: %d\n", x); printf("Address of variable in RAM: %p\n", &x); // using reference operator `&` printf("Dereferencing address of variable: %d", *(&x)); // using dereference operator `*` return 0; }
Note
Nota

Non confondere l'operatore di dereferenziazione (*x) con l'operatore di moltiplicazione (x*y).

Compito

Swipe to start coding

  • Creare un array di interi di 5 elementi e popolarlo.
  • Recuperare l'indirizzo del terzo elemento.
  • Incrementare l'indirizzo del terzo elemento e dereferenziare l'indirizzo incrementato per stampare il valore a cui punta.

Soluzione

Switch to desktopCambia al desktop per esercitarti nel mondo realeContinua da dove ti trovi utilizzando una delle opzioni seguenti
Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 6. Capitolo 2
single

single

some-alt