函数参数问题

[复制链接]
1461|4
 楼主| txcy 发表于 2013-6-27 18:24 | 显示全部楼层 |阅读模式
不是说strcpy(char* dest, const char *src)函数参数
src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串
在VC下运行这两个为什么通过了啊?
char dest1[4]="aaa";
char src1[6]="bbbbb";
strcpy(dest1,src1);
cout<<dest1<<endl;
输出bbbbb

char dest2[4]="aaa";
char* src2="bbbbb";
strcpy(dest2,src2);
cout<<dest2<<endl;
输出bbbbb

//而这两个居然崩了
char* dest3="aaaaa";
char  src3[4]="bbb";
strcpy(dest3,src3);
cout<<dest3<<endl;

char* dest4="aaaaa";
char* src4="bbb";
strcpy(dest4,src4);
cout<<dest4<<endl;
求指点!!!
火箭球迷 发表于 2013-6-27 18:43 | 显示全部楼层
char* dest3="aaaaa";
char* dest4="aaaaa";

都是VC惹的祸。

"abcdef"这一类的字符串字面量只能赋值给char const *类型指针,不能赋值给char *类型。
如果你把dest3和dest4定义为char const * ,编译器就会阻止你调用strcpy。

没出问题那两个,只是问题没有表现出来。
baidudz 发表于 2013-6-27 19:15 | 显示全部楼层
其实电脑开机后物理内存的每个字节都是可读写的,区别仅在于操作系统内存管理模块在你读写时是否能发现并是否采取相应动作而已。
pkat 发表于 2013-6-27 19:28 | 显示全部楼层
dest3跟dest4指向的是字符串常量。
gxgclg 发表于 2013-6-28 23:30 | 显示全部楼层
没看太明白
您需要登录后才可以回帖 登录 | 注册

本版积分规则

274

主题

2106

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部