Нулевые указатели, почему я получаю этот вывод? - PullRequest
0 голосов
/ 03 марта 2019

Я недавно пытаюсь выучить указатели на Си.поэтому я использую (нулевые указатели) 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 = &number;
        printf("%d \n", number);
        printf("%d \n", pnumber);

        return 0;

    }

И вывод

10

17824320 (мне кажется адрес памяти)

1 Ответ

0 голосов
/ 03 марта 2019
pnumber = &number;
...
printf("%d \n", pnumber);

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...