海上飞洪 发表于 2007-11-1 21:59

腾讯的面试题,不知有谁可以解释下答案?

int a[]={10,20,30,40};
short *p,*q;
p=(short*)(a+1);
q=(short*)a;
a=?

zaijzhgh 发表于 2007-11-1 23:54

这样理解吧:p和q相差一个数组元素大小,而a是int型的数组。因此相差是2个字节(在不同的编译器上应该不同吧?)。所以p-q是2。所以a就是a,也就是30。
这是在vc6上运行的结果:
a=1245040,p=1245044,q=1245040
a=30
这是在c-free4.0上运行的结果:
a=37814096,p=37814100,q=37814096
a=30

海上飞洪 发表于 2007-11-2 18:51

还有一道,感觉很难
定义一个宏,求出一个数组最高维的下标数
比如:a
Dim(a)=8
页: [1]
查看完整版本: 腾讯的面试题,不知有谁可以解释下答案?