【发布时间】:2010-05-10 14:08:22
【问题描述】:
在下面的代码中,
#include<stdio.h>
int main()
{
short a[2]={5,10};
short *p=&a[1];
short *dp=&p;
printf("%p\n",p);
printf("%p\n",p+1);
printf("%p\n",dp);
printf("%p\n",dp+1);
}
现在我得到的输出是:
0xbfb45e0a
0xbfb45e0c
0xbfb45e04
0xbfb45e06
这里我理解了p和p+1,但是当我们做dp+1的时候,那么由于dp指向的是指向short的指针,
并且由于指向 short 的指针大小为 4 个字节,因此 dp+1 应该增加 4 个单位,但它
仅增加 2。
请说明原因。
【问题讨论】:
-
short **dp是指向short的指针