Monkey ha scritto:
Il problema é il primo, dove non sto usando un puntatore di grado superiore nella funzione, eppure mi stampa comunque 3.
p è un puntatore di un grado superiore rispetto ad a (che seguendo questa narrazione possiamo considerare di grado 0).
In ogni caso per capire meglio quello che intendo dire, prova a lanciare il seguente codice.
#include <stdio.h>
void fun_1(int *p)
{
*p = 1;
p = NULL;
}
void fun_2(int **p)
{
**p = 2;
*p = NULL;
}
int main()
{
int a = 5;
int *p = &a;
printf("a = %d\np = %x\n\n", a, p);
fun_1(p);
printf("a = %d\np = %x\n\n", a, p);
fun_2(&p);
printf("a = %d\np = %x\n\n", a, p);
return 0;
}
Se hai dubbi chiedi pure.