一个面试题

xiaojun19830916 2006-08-31 12:40:24
1.enum string
{
x1,
x2,
x3=10,
x4,
x5,
}x;
问x= 0x801005,0x8010f4 ;
2.unsigned char *p1;
unsigned long *p2;
p1=(unsigned char *)0x801000;
p2=(unsigned long *)0x810000;
请问p1+5= ;
p2+5= ;



能给出详细的解吗?
...全文
1183 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
czm1203 2006-08-31
  • 打赏
  • 举报
回复
第一题不知道所谓。

第二题:
p1 + 5 = 0x801005;
p2 + 5 = 0x801014;
kangji 2006-08-31
  • 打赏
  • 举报
回复
第一题是什么意思?
Arthur_ 2006-08-31
  • 打赏
  • 举报
回复
to jixingzhong:
p2+5=0x810000 + sizeof(long)*5 = 0x810020 ;//0x810014
):
jixingzhong 2006-08-31
  • 打赏
  • 举报
回复
就是指针 步长问题 ...
===========
楼上的动作也太快了吧 ...

=_=
jixingzhong 2006-08-31
  • 打赏
  • 举报
回复
2.unsigned char *p1;
unsigned long *p2;
p1=(unsigned char *)0x801000;
p2=(unsigned long *)0x810000;
请问p1+5= ;
p2+5= ;
==========
p1+5=0x810000 + sizeof(char)*5 = 0x801005
p2+5=0x810000 + sizeof(long)*5 = 0x810020 ;
边城狂人 2006-08-31
  • 打赏
  • 举报
回复
第一题是啥意思?反正 x1 和 x2 分别是 0,1,x3-x5 就是 10, 11, 12
申明了一个 x 变量,没有赋值,这也能猜出来 x 值是多少?我晕!

第2个就是考你 char 和 long 分别是占几个字节
char 是1个,8位
long 是4个,32位
答案分别是
0x801000 + 5
0x810000 + 5 * 4
lixf76 2006-08-31
  • 打赏
  • 举报
回复
1. x = 0
在默认情况下,enum初始值都是从0开始,除非指定第一个枚举类型的值.

2. p1 + 5 = 0x801000 + 5 * sizeof(unsigned char) = 0x801000 + 5 * 1 = 0x801005
p2 + 5 = 0x810000 + 5 * sizeof(unsigned long) = 0x810000 + 5 * 4 = 0x8100f4

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧