Skip to content

Instantly share code, notes, and snippets.

@MarcoBuster
Created November 30, 2017 18:38
Show Gist options
  • Save MarcoBuster/66154c6ee0dd530142e0a325eed06d7f to your computer and use it in GitHub Desktop.
Save MarcoBuster/66154c6ee0dd530142e0a325eed06d7f to your computer and use it in GitHub Desktop.
#include <stdio.h>
// Piccolo tutorial sui puntatori in C / C++
// Relased under Creative Commons CC0 1.0 Universal License (public domain)
int main()
{
int var = 45;
int *pointer; // inizializza puntatore di tipo int
int array[] = {0, 1, 2, 3, 4, 5}; // inizializza array a caso
int *array_pointer; // inizializza puntatore di tipo int
pointer = &var; // copia l'indirizzo della cella dove è contenuta la variabile var in pointer
printf("Indirizzo cella di var: %d", (int) pointer); // stampa l'indirizzo della cella
// P.S.: (int) variabile serve per convertirla in int (casting)
array_pointer = &array[0]; // copia l'indirizzo della cella dove è contenuto il primo elemento dell'array
printf("\nIndirizzo cella array[0]: %d", (int) array_pointer); // come sopra
printf("\nValore cella array[0]: %d", *array_pointer); // stampa il valore della cella con l'indirizzo contenuto in array_pointer
array_pointer++; // incrementa di 1 il valore di array_pointer
// (negli array di int, tutti gli elementi sono uno dopo l'altro. Non sono sicuro che valga per sempre)
printf("\nIndirizzo cella array[1]: %d", (int) array_pointer); // come sopra
printf("\nValore cella array[1]: %d", *array_pointer); // come sopra
/*
* OUTPUT:
* Indirizzo cella di var: 1370159224
* Indirizzo cella array[0]: 1370159232
* Valore cella array[0]: 0
* Indirizzo cella array[1]: 1370159236
* Valore cella array[1]: 1
*
* Ovviamente gli indirizzi della memoria cambiano a ogni avvio e sono abbastanza casuali
* (ogni programma ha il proprio range di memoria che può usare, stabilito dal'OS)
*/
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment