数组下标问题
#include<iostream>
using namespace std;
int main()
{
int a[3];
a[0]=0;a[1]=1;a[2]=2;
int *p,*q;
p=a;
q=&a[2];
cout<<a[q-p]<<'\n';
cout<<q<<" "<<p<<endl;
system("pause");
return 0;
}
输出结果为:
2
0015FD90 0015FD88
想问的是:q和p的地址之差是8(十六进制),为什么还能使数组a指向第三个元素2呢?将p和q指针换成double型的指针也是一样的结果
[解决办法]
这是有p和q指针的类型决定的。因为它们的类型都是int类型的指针,那么它们之间的差值是int类型的个数的差距。
[解决办法]
我认为3楼说的对,3楼的意思就是
Type *p, *q;
p - q = ((int)p - (int)q)/sizeof(Type)
[解决办法]
因为一个int占4字节两个就是8字节啊