2

次のコードでは、

#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);  
}  

今私が得た出力は次の
とおり
です

ここで p と p+1 を理解しましたが、dp+1 を実行すると、dp は short へのポインターを指し、short へのポインターのサイズは 4 バイトであるため、dp+1 は 4 単位増加するはずですが、
増加しています。 2だけ
。理由を教えてください。

4

2 に答える 2

5

dpshort へのポインタとして定義され、short は 2 バイトです。コンパイラが気にするのはそれだけです。実際にdpショートへのポインターへのポインターを作成するには、次のことを行う必要があります。

short **dp = &p;
于 2010-05-10T14:11:45.110 に答える
3

ポイントはどこ でも構いません。dpへのポインタshortなので、メモリアドレスを だけ増やすことで加算が働きますsizeof(short) == 2

于 2010-05-10T14:11:55.067 に答える