Я написал это, чтобы проверить свои знания на указателях:Почему эта программа имеет неожиданные значения указателя?
int main(){
int seven = 7;
int* p = &seven;
int** pp = &p;
int*** ppp = &pp;
printf("%d %d %d %d\n", *ppp, &pp, &p, &seven);
}
Однако на выходе, я получаю:
1363848032 1363848024 1363848032 1363848044
Это неинтуитивное для меня, потому что *ppp == &p
Я ожидая *ppp == &pp
. Почему это происходит? Соответствует ли &pp
указателю на p
?
всегда использует спецификатор формата '"% p "' для печати адресов указателей! также возвращаем что-то из основного (так как он должен возвращать 'int'), чтобы быть педантичным, возвращать' EXIT_SUCCESS' из 'stdlib.h' и, наконец, не в последнюю очередь, eather писать' int main (void) 'или' int main (int argc, const char * argv []) ' –
Yessir, будет делать в будущем @PeterVaro –