pnumber = &number;
...
printf("%d \n", pnumber);
Исходные значения NULL, приходящиеся на int *pnumber = NULL;
, изменяются на pnumber = &number;
, поэтому вы записываете значение номер , являющееся адресом число
Если вы делаете printf("%d \n", *pnumber);
, который пишет 10