工大后院

 找回密码
 加入后院

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 2056|回复: 2

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

[复制链接]
发表于 2007-11-1 21:59 | 显示全部楼层 |阅读模式
int a[]={10,20,30,40};
short *p,*q;
p=(short*)(a+1);
q=(short*)a;
a[p-q]=?
发表于 2007-11-1 23:54 | 显示全部楼层
这样理解吧:p和q相差一个数组元素大小,而a是int型的数组。因此相差是2个字节(在不同的编译器上应该不同吧?)。所以p-q是2。所以a[p-q]就是a[2],也就是30。
这是在vc6上运行的结果:
a=1245040,p=1245044,q=1245040
a[p-q]=30
这是在c-free4.0上运行的结果:
a=37814096,p=37814100,q=37814096
a[p-q]=30
回复

使用道具 举报

 楼主| 发表于 2007-11-2 18:51 | 显示全部楼层
还有一道,感觉很难
定义一个宏,求出一个数组最高维的下标数
比如:a[8][3]
Dim(a)=8
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入后院

本版积分规则

QQ|Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2025-5-14 22:30

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表