C中数组与指针的问题.急急急急急急急求帮助
各位高手,小弟在学习C的过程中看到一个小程序,但对程序为何出现此结果感到迷惑,初学,大家见笑.希望大家帮助,谢谢
使用语言平台:VC++6.0
程序如下
#include "stdafx.h"
#include "iostream.h"
int main(int argc, char* argv[])
{
//printf("Hello World!\n");
int a[3];
a[0]=1;
a[1]=2;
a[2]=3;
int* p,*q;
p=a;
q=&a[2];
cout<<a[q-p];
return 0;
}
在机器中运行结果为3.C++中整型占4个字节,那么q-p应该为8,我在程序运行时加了WATCH监视P和Q的值,也应该如此,但Q-P却为2.为什么?
运行时WATCH中变量的值显示如下:
P:0X0012FF74
Q:0X0012FF7C
Q-P:2
a[q-p]:3