#include typedef unsigned char byte; void nonCambia(int subvar) { printf("[nonCambia] Un intero: %d\n", subvar); int* psubvar = &subvar; printf("[nonCambia] L'indirizzo dell'intero: %p\n", psubvar); subvar = 55; printf("[nonCambia] Un intero (diverso): %d\n", subvar); } void oraCambia(int* psubvar) { printf("[oraCambia] Un intero: %d\n", *psubvar); printf("[oraCambia] L'indirizzo dell'intero: %p\n", psubvar); *psubvar = 55; printf("[oraCambia] Un intero (diverso): %d\n", *psubvar); } int main(int argc, char** argv) { int var = 42; printf("[main] Un intero: %d\n", var); int* pvar = &var; printf("[main] L'indirizzo dell'intero: %p\n", pvar); printf("\n[main] chiamo nonCambia...\n"); nonCambia(var); printf("[main] Un intero (di nuovo): %d\n", var); printf("\n[main] chiamo oraCambia...\n"); oraCambia(pvar); printf("[main] Un intero (di nuovo): %d\n", var); printf("\n[main] da ricordare:\n"); printf("[main] *&variabile (%d) == variabile (%d)\n", *&var, var); printf("[main] &*puntatore (%p) == puntatore (%p)\n", &*pvar, pvar); return 0; }