请各位评评这道面试题

weigang1982713 2009-07-20 04:18:14
某个程序片段,定义了以下变量。
char *pc1 = NULL, *pc2 = NULL;
int *pi1 = NULL, *pi2 = NULL;
char c1 = '0', c2 = '1', c3 = '2', c4 = '3';
int i1 = 1, i2 = 65536;
某次运行时,变量在内存中分布如下:
============================
变量: 地址 : 值
----------------------------
pc1 : 0x00136f3c : 0
: 0x00136f3b : 0
: 0x00136f3a : 0
: 0x00136f39 : 0
pc2 : 0x00136f38 : 0
: 0x00136f37 : 0
: 0x00136f36 : 0
: 0x00136f35 : 0
pi1 : 0x00136f34 : 0
: 0x00136f33 : 0
: 0x00136f32 : 0
: 0x00136f31 : 0
pi2 : 0x00136f2f : 0
: 0x00136f2e : 0
: 0x00136f2d : 0
: 0x00136f2c : 0
c1 : 0x00136f2b : 48
c2 : 0x00136f2a : 49
c3 : 0x00136f29 : 50
c4 : 0x00136f28 : 51
i1 : 0x00136f27 : 1
: 0x00136f26 : 0
: 0x00136f25 : 0
: 0x00136f24 : 0
i2 : 0x00136f23 : 0
: 0x00136f22 : 0
: 0x00136f21 : 1
: 0x00136f20 : 0
============================
接着,有下列语句。
pc1 = &c1;
c1 = 36;
c2 = 111;
c3 = 19;
c4 = 0;
pi1 = (int*)pc1;
i1 = *pi1;
pc2 = (char*)i1;
pi2 = (int*)(pc2 + 1);
i1 = *pi2;
============================
以十六进制方式
写出下列表达式
在执行完上述语句后
的值
&i1 : 0x_______
i1 : 0x_______
&c2 : 0x_______
c2 : 0x_______
&c4 : 0x_______
c4 : 0x_______
...全文
153 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞天御剑流 2009-07-20
  • 打赏
  • 举报
回复
这题出题者自己都有问题,没有交代是大端还是小端,从i1值的分布来看,似乎应该是大端,但是地址的起始位置又有错,应该都从小地址那一头开始的呀。
matrixcl 2009-07-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 challenge99 的回复:]
面试看到这样的题多半做不出来, 圈兜的太大了
笔试勉强可以做下

&i1 : 0x 00 13 6f 24
i1 : 0x 13 6f 24 00
&c2 : 0x 00 13 6f 2a
c2 : 0x 6f
&c4 : 0x 00 13 6f 28
c4 : 0x 00

楼下的来对对答案


[/Quote]

我的答案和5楼一样。

不过这种题还是有点误导人,正常情况下这样用指针 pc2 = (char*)i1; 等于找死
fice1989 2009-07-20
  • 打赏
  • 举报
回复
还好啦,考验一下大家对指针的基础理解
abcdef0966 2009-07-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 challenge99 的回复:]
面试看到这样的题多半做不出来, 圈兜的太大了
笔试勉强可以做下

&i1 : 0x 00 13 6f 24
i1 : 0x 13 6f 24 00
&c2 : 0x 00 13 6f 2a
c2 : 0x 6f
&c4 : 0x 00 13 6f 28
c4 : 0x 00

楼下的来对对答案


[/Quote]

&i1 : 0x 00 13 6f 24
i1 : 0x 6f 13 00 00
&c2 : 0x 00 13 6f 2a
c2 : 0x 6f
&c4 : 0x 00 13 6f 28
c4 : 0x 00

meipen 2009-07-20
  • 打赏
  • 举报
回复
&i1 : 0x 00 13 6f 2b
i1 : 0x 25
&c2 : 0x 00 13 6f 2a
c2 : 0x 6f
&c4 : 0x 00 13 6f 28
c4 : 0x 00
challenge99 2009-07-20
  • 打赏
  • 举报
回复
面试看到这样的题多半做不出来, 圈兜的太大了
笔试勉强可以做下

&i1 : 0x 00 13 6f 24
i1 : 0x 13 6f 24 00
&c2 : 0x 00 13 6f 2a
c2 : 0x 6f
&c4 : 0x 00 13 6f 28
c4 : 0x 00

楼下的来对对答案

meipen 2009-07-20
  • 打赏
  • 举报
回复
给出内存的分配方式,就是告诉你,是32位机,至于怎么指针和变量在内存的存储方式,哎,没学好啊
这道题没那么简单
等等高人吧
Uindex 2009-07-20
  • 打赏
  • 举报
回复
留给电脑自己算吧,我坦白,没打算抢它的饭碗!
gaboyqiao 2009-07-20
  • 打赏
  • 举报
回复
i1 = *pi2;不会有内存错误么?
Treazy 2009-07-20
  • 打赏
  • 举报
回复
挺基础的考题,不错!

69,371

社区成员

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

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