作者vtr198172 (43米的深海)
看板C_and_CPP
标题[问题] C的空指标问题
时间Mon Jun 8 13:39:39 2009
大家好...最近遇到一个问题,但不知道为什麽会这样,所以上来请教一下大家:
#include <stdlib.h>
#include <stdio.h>
int main()
{
double *ptr1 = 0;
printf("ptr1's postion:%d\n",ptr1);
printf("ptr1+1:%d\n",ptr1+1);
printf("ptr1+2:%d\n",ptr1+2);
printf("ptr1++:%d\n",ptr1++);
printf("++ptr1:%d\n",++ptr1);
return 0;
}
列印出来的答案是
ptr1's postion:0
ptr1+1:8
ptr1+2:16
ptr1++:0
++ptr1:8
可以跟我解释一下为何ptr1是空指标时,ptr1+1时会出现8 ?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.22.20.210
1F:推 Ebergies:因为 sizeof( double) = 8 06/08 13:44
2F:推 QQ29:你怎麽不问++ptr1呢? 06/08 13:51
3F:→ vtr198172:++ptr1也想问...只是想先离清一开始的问题.. 06/08 13:53
4F:推 QQ29:指标+多少 就是看这指标形态的大小 就像一楼说的ptr是double 06/08 13:54
5F:→ QQ29:一次就是前进了8byte 06/08 13:54
6F:→ vtr198172:那ptr1不是代表那个指标的指向的位址,怎麽印出来却不是 06/08 14:14
7F:推 littleshan:印出来的是位址没错呀 06/08 14:15
8F:→ littleshan:还是说你想看到的是 0x0000000 06/08 14:16
9F:→ ledia:为什麽会觉得 0 不是位址呢 ? 06/08 14:27
10F:推 phstudy:++ptr1这行的值,印出来应该是16 06/08 14:44
11F:推 QQ29:我也觉得是16耶 仔细看 06/08 15:48
12F:→ QQ29:你一开始指定他指到null阿 0 所以印出来是0 06/08 15:48
13F:→ weiyucsie:最後一个++ptr1感觉应该是16阿@@ 06/08 15:57
14F:→ vtr198172:不好意思各位...++ptr1的磪是16没错..我打错了 06/08 16:29
15F:→ vtr198172:感谢各位的解答.....^^" 06/08 16:33