【问题标题】:Addition of an integer to a pointer将整数与指针相加
【发布时间】: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的指针

标签: integer pointers addition


【解决方案1】:

dp被定义为一个指向short的指针,而一个short是两个字节。这就是编译器所关心的。要真正使dp 成为指向short 指针的指针,您需要这样做

short **dp = &p;

【讨论】:

    【解决方案2】:

    dp在哪里 无关紧要。它是指向short 的指针,因此通过将内存地址增加sizeof(short) == 2 来进行加法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-27
      • 1970-01-01
      • 2017-10-20
      • 2015-03-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多