以下程序中a[q-p] 运行结果?
#include <iostream>
using namespace std;
int main()
{
int a[3]={0,1,2};
int *p, *q;
p = a;
q = &a[2];
cout<<p<<endl;
cout<<q<<endl;
cout<<q-p<<endl;// q-p的实际运算是(q地址值 - p地址值)/sizeof(int) = 8/4=2
cout <<a[q-p] <<endl;
return 0;
}
结果:
0x28fefc
0x28ff04 //16进制地址值直接运算的结果是8!!!但是指针q-p运算得2!!!
2
2
Process returned 0 (0x0) execution time : 0.129 s
Press any key to continue.
0x28fefc - 0x28ff04 = 0x08(16进制),相差是8
q-p的实际运算是(q地址值 - p地址值)/sizeof(int) = 8/4=2
本文探讨了C语言中使用指针计算数组偏移量与访问数组元素的过程,通过具体实例展示了指针q-p的实际运算结果与预期结果之间的差异,并详细解释了其背后的原理。
1575

被折叠的 条评论
为什么被折叠?



