华为面试题解析 - 06

2014-11-24 02:27:46 · 作者: · 浏览: 1
06. 计算下列程序的输出
[cpp]
/*
* exercise05.c
*
* Created on: 2012-11-5
* Author: xiaobin
*/
int main(int argc, char* argv[])
{
int a[3];
int i;
for ( i = 0; i < 3; i++)
{
a[i] = i;
}
int *p, *q;
p = a;
q = &a[2];
printf("%d\n", a[q-p]);
return 0;
}
首先,我们要知道数组a的数值情况。
a是有3个元素的数组,他们分别是a[0] = 0; a[1] = 1; a[2] = 2;
然后,我们要知道指针p和q的数值情况。
p是一个指向a数组的指针,那么他的数值就是0。
q是一个取a数组第3个元素的指针,那么他的数值就是2。
最后,计算q与p的地址差
q - p = 2;
输出结果:(a[2])
[cpp]
2
附调试图: