EDIT: Я знаю, что второй пример неверен, и я знаю, как сделать все правильно, я хочу знать, откуда взялись неправильные значения и где они указывают, когда ничего нет? как значение a стало значением 2686744
Каков источник неправильного значения указателя?
Sry, я не знаю, какой ответ я должен выбрать в лучшем случае, поэтому я дал всем вам преимущество. возможно, один будет выбран позже.
Когда я создаю указатель и попытаться захватить это неправильный путь, как показано ниже:
int b = 5;
int *a;
a = &b;
Как я понял, правильный путь, чтобы захватить значение заостренного переменной а является
printf("value of a is: %d\n", *a);
printf("storage location of a is: %p\n", *a);
, то выход будет
value of a is: 5
storage location of a is: 00000005
но что выходные точки, когда я пытаюсь это неправильно, как это?
printf("value of a is: %d\n", a);
printf("storage location of a is: %p\n", a);
Я получаю выход
value of a is: 2686744
storage location of a is: 0028FF18
Где это пришло? есть ли автоматически созданное место хранения для a и откуда появилось его значение?
Надеюсь, вы меня понимаете, мой английский не очень хорош. спасибо
'0028FF18' is' 2686744', но в шестнадцатеричном виде. '% p' используется только для печати указателей. '* a' разделяет указатель и дает значение в памяти, обозначенное' a'. 'a' - это сам указатель, и печать' a' даст вам адрес 'b'. –
но 2686744 не является местом хранения b, а также не значением? – muni