向指针添加整数

时间:2010-05-10 14:08:23

标签: integer pointers 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);  
}  

现在我得到的输出是: 0xbfb45e0a
0xbfb45e0c
0xbfb45e04
0xbfb45e06

这里我理解了p和p + 1,但是当我们做dp + 1时,那么因为dp指向指向short, 因为指向short的指针大小是4个字节,所以dp + 1应该增加4个单位但是它 仅增加2 请解释原因。

2 个答案:

答案 0 :(得分:5)

dp被定义为指向short的指针,short是两个字节。这就是编译器所关心的。要实际使dp指向指向short的指针,您需要执行

short **dp = &p;

答案 1 :(得分:3)

{/ 1}}指向无关紧要。它是指向dp的指针,因此通过short增加内存地址来进行添加。