求解为什么两个地址相减后并非实际变量的地址值的差
现有疑问,实在是想不明白,烦请各位指教一下。代码:
#include "iostream.h"
void main()
{
static char a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
char *p;
for(p=a[0];p<a[0]+12;p++)
{
cout<<p-a[0]<<endl;
cout<<p<<endl;
cout<<a[0]<<endl;
}
}
执行结果(部分):
0
0x0042D710
0x0042D710
1
0x0042D714
0x0042D710
2
0x0042D718
0x0042D710
疑问:p是0x0042D714,a[0]是0x0042D710时,p-a[0]的值为1,为什么不是4?
如果p和a[3][4]更改为char型,并且a[3][4]={'1','2','3','4','5','6','7','8','9','a','b','c'},执行结果(部分)如下所示,为什么p-a[0]的值仍然不变?
0
123456789abc
123456789abc
1
23456789abc
123456789abc
2
3456789abc
123456789abc
3
456789abc
123456789abc