Hap*_*tal 2 pointers integer addition
在以下代码中,
#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);
}
Run Code Online (Sandbox Code Playgroud)
现在我得到的输出是:0xbfb45e0a
0xbfb45e0c
0xbfb45e04
0xbfb45e06
在这里我理解p和p + 1,但是当我们做dp + 1时,那么因为dp指向short指针,并且因为指向short的指针大小为4个字节,所以dp + 1应该增加4个单位但是它
会增加只有2.
请解释原因.
dp
被定义为指向short的指针,short是两个字节.这就是编译器所关心的.要实际dp
指向指向short的指针,您需要这样做
short **dp = &p;
Run Code Online (Sandbox Code Playgroud)