static unsigned char xdata membuff[256];
static unsigned char *p;
p = &membuff;
printf("membuff address:%p\n", membuff);
printf("p :%04x\n", p);
------------------------------------------------
列印結果:membuff address :x : 010b
p : 0101
------------------------------------------------
疑問:為什么p不是存放了membuff的地址?
將printf引數改成%p之后:
printf("membuff address:%p\n", membuff);
printf("p :%p\n", p);
------------------------------------------------
列印結果:membuff address :x : 010b
p : x : 010b
------------------------------------------------
疑問:%p列印的不是指標p的地址嗎?為什么變成membuff的首地址了?
uj5u.com熱心網友回復:
%p列印的是指標p變數里的內容,即membuff的地址。至于用%x和%p的輸出的區別,沒看出來。但是需要注意的是%x和%p列印的長度可能不一樣,比如在64為系統里,%x列印的是4位元組的地址,而%p輸出的是8位元組的地址。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/17594.html
標籤:C語言
上一篇:基于 VSCode+CMake+VisualCppBuildTools2015 的 C++ 開發環境的困惑
下一篇:C語言影像問題
