查看單個文章
  #1  
舊 2014-06-09, 09:25 PM
哈啦 的頭像
哈啦 哈啦 目前離線
論壇管理員
 
註冊日期: 2002-05-28
文章: 23,014
預設 C語言中指標位址增加的問題

有一個範例是表現出不同型的指標當其增加一個單位時,因型態不同而增加不同位元數。

如下:

#include <stdio.h>

int main(void)
{
char *cp,ch;
int *ip,i;
float *fp,f;
double *dp,d;

cp=&ch;
ip=&i;
fp=&f;
dp=&d;

printf("%p %p %p %p\n",cp,ip,fp,dp);//印出目前的各指標記憶體的位址;

cp++;
ip++;
fp++;
dp++;

printf("%p %p %p %p\n",cp,ip,fp,dp);//印出各加一單位之後各指標記憶體的位址;

return 0;
}

結果印出來的答案如下:
000000000022FE3F 000000000022FE38 000000000022FE34 000000000022FE28
000000000022FE40 000000000022FE3C 000000000022FE38 000000000022FE30

我知道它們都是以十六進位的方式來看,我看得有點頭大。但以最後一組為例,000000000022FE28然後變成000000000022FE30,這組照說是反映出double *dp這個指標和它++之後的位址變化,書上說double的增加一個單位應是增加8個位元組。可是這二組位址似乎只差了2,怎麼看也不像是差了8個位元組啊?

請先進指教一下。
__________________
咖啡走路
微博


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