VC++ C++ C# Algorithm
C++博客
首页
新随笔
联系
聚合
管理
21 Posts :: 3 Stories :: 31 Comments :: 0 Trackbacks
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(4)
给我留言
查看公开留言
查看私人留言
随笔档案
(21)
2007年3月 (13)
2007年1月 (1)
2006年12月 (5)
2006年11月 (2)
文章档案
(3)
2007年1月 (2)
2006年12月 (1)
相册
照片
资料网站
C++之父主页
题库吧
数据库面试题|Java面试题|C++面试题|.NET面试题
微软在线课程
搜索
最新评论
1. re: c++名字查找
是
--周敏桢
2. re: c++名字查找
名字区码
--王
3. re: SDL游戏编程(3)使用SDL扩展类库显示PNG图片和字体
评论内容较长,点击标题查看
--dniit
4. re: c++名字查找
桔柑
--黄建宁
5. re: c++名字查找
我要找到王疆
--王疆
评论排行榜
1. c++名字查找(13)
2. SDL游戏编程(3)使用SDL扩展类库显示PNG图片和字体(4)
3. 循环的效率(4)
4. SDL游戏编程(8)鼠标事件(3)
5. C/C++中的日期和时间(转载)(2)
一道c++的面试题目
#include
<
stdio.h
>
#include
<
string
.h
>
int
main(
int
argc,
char
*
argv[])
{
int
i
=
1
;
char
buf[
4
];
strcpy(buf,
"
AAAA
"
);
printf(
"
%d\n
"
, i);
return
0
;
}
这是一道C++面试题目,问在x86平台上为什么不能输出想要的结果。
char
*
mycopy(
char
*
dst,
char
*
src)
{
char
*
cp
=
dst;
while
(
*
cp
++=*
src
++
);
return
dst;
}
以上面就是strcpy的实现,其中没有对边界进行检查,可以看到该函数把'0\'也复制到目的串内存中去了,而目的串申请的空间不够,就把'\0'复制到i的内存中去了,x86又是littleedian(低位字节地址小),原来i内存结构是0x01 00 00 00 现在成0x 00 00 00 00,所以输出0了。
注:我在Dev-C++中确实是输出0,在VS2003中出来一个运行时检测错误,说buf附近栈崩了,但输出还是1,不知道是不是VS没做对'\0'的复制。
posted on 2006-12-13 15:41
大熊猫
阅读(987)
评论(2)
编辑
收藏
引用
Feedback
#
re: 一道c++的面试题目
2006-12-25 13:40
Dain
跟编译器有关了
回复
更多评论
#
re: 一道c++的面试题目
2006-12-30 23:04
xylary
我用gcc编译输出是8257 用vc的cl编译是1
回复
更多评论
刷新评论列表
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
网站导航:
博客园
IT新闻
BlogJava
博问
Chat2DB
管理
Powered by:
C++博客
Copyright © 大熊猫