Нулевые указатели, почему я получаю этот вывод?

#c #pointers

#c #указатели

Вопрос:

Я недавно пытаюсь изучить указатели на C . поэтому я использую (нулевые указатели) int *pnumber = NULL; но я не понимаю, почему я получаю 17824320 на выходе. не могли бы вы, пожалуйста, объяснить?

 #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include<stdlib.h>

    int main() {

        int number = 0;
        int *pnumber = NULL;
        number = 10;
        pnumber = amp;number;
        printf("%d n", number);
        printf("%d n", pnumber);

        return 0;

    }
  

И вывод такой

10

17824320 (я думаю, адрес памяти)

Комментарии:

1. потому что вы назначаете его в pnumber = amp;number; ?

Ответ №1:

 pnumber = amp;number;
...
printf("%d n", pnumber);
  

Исходные значения NULL, поступающие из int *pnumber = NULL; , изменяются pnumber = amp;number; , поэтому вы записываете значение pnumber, являющееся адресом number

Если вы это сделаете printf("%d n", *pnumber); , это запишет 10

Комментарии:

1. Спасибо за вашу помощь