查看單個文章
  #5  
舊 2014-06-15, 08:48 PM
哈啦 的頭像
哈啦 哈啦 目前離線
論壇管理員
 
註冊日期: 2002-05-28
文章: 23,019
預設

引用:
作者: yumi 查看文章
%p和%d打印出来的数值是相等的,前者打印的是16进制,后者是10进制
thanks。

但我剛才去換算網站作了換算,換算過來並不符合?
http://tool.httpcn.com/Tool/JinZhiZhuanHuan.html

000000000023FE54 2358868 這是我這個程式得的答案,拿這去換算,結果不符合?


但我操作了一些方式,如下:
引用:
#include <Stdio.h>

int main(void)
{
int x,*p;
p=&x;
x=10;
printf("%p %p %d",&x,p,p);
return 0;
}
000000000023FE54 000000000023FE54 2358868

引用:
#include <Stdio.h>

int main(void)
{
int x,*p;
p=&x;
x=10;
printf("%p %p %d",&x,&p,p);
return 0;
}
000000000023FE5C 000000000023FE50 2358876

為何我只是中間一個求的是p的%p,另一個求&p的%p,結果二者最後跑出來的三個位址就都不同了?

難道是因為我二次求的內容不太一樣,系統配置記憶體的位址就不太一樣了嗎?而如果我又改回原來的方程式,求得的答案又和以前相同,這表示記憶體配置又回到從前。所以就算這個程式裡並未增減任何變數,只因求的內容有不同,記憶體就會有不同位址的配置?
__________________
咖啡走路
微博


您是網站站長嗎?歡迎到站長俱樂部 一起討論吧。
按我看版規
code.club
回覆時引用此篇文章