Не в состоянии понять поведение указателя
int * z=NULL; int checkaddress(int * a) { int * b = (int *)malloc(sizeof(int)); fprintf(stderr,"b:%p\n",b); fprintf(stderr,"a:%p\n",a); a = b; fprintf(stderr,"a:%p\n",a); fprintf(stderr,"z:%p\n",z); } int main() { checkaddress(z); fprintf(stderr,"z:%p\n",z); return 1; }
Что я уже пробовал:
Я новичок в языке Си. Я столкнулся с этим поведением, которое мне было трудно понять. Я передаю адрес z в качестве аргумента функции checkAddress. Таким образом, в идеале a должен содержать адрес z. Теперь, насколько я понимаю, если указатель b назначен a. Тогда z также должен содержать адрес b. Хотя это не тот случай. Должно быть, в моем понимании есть какой-то пробел. Может ли кто-нибудь объяснить мне это поведение?