VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 143|回复: 2

[已解决]一个简单的strcpy定义求助

[复制链接]
24_avatar_middle
最佳答案
0 
在线会员 发表于 2021-9-10 00:12:19 | 显示全部楼层 |阅读模式
char *strcpy(char* dest, const char *src);
将参数src 字符串拷贝至参数dest 所指的地址
然后使用
char str1[]={0};
char  str2="aaa";
strcpy(str1,str2)
最后结果为str1=aaa;
问题是定义在char* dest和const char *src都是表示两个指针,为什么在使用的时候可以放入两个字符串str1和str2?,小白一只,请各位大佬回答

最佳答案
39_avatar_small
2021-9-10 08:07:44
本帖最后由 取名难 于 2021-9-10 08:22 编辑

首先,char str1[0] = {0};这句语句表面上是你定义了一个char数组大小由后面初始化(即{}中的元素)来决定,大小为1的字符数组;但是在计算机看来你是定义了一个char指针指向数组的起始地址str1[0],你可以通过str1[0~N]访问里面的元素,也可以通过*(str1+0~N)起始地址加偏移量来访问,数组在计算机看来就是指针。
你在str1定义了一个char型的大小但是通过str2赋值了3个字节大小的值,这样是不对的,但是编译器没有报错,原因是有可能str1后面的内存没有用上,所以就没有报非法访问内存的错误(段错误),但不是次次都是这么好运的,一旦非法访问,程序就崩了
可以使用strcpy的带大小的版本char *strncpy(char *destinin, char *source, int maxlen);由用户指定拷贝多大的内存空间的数据。

str2 好像少写了一个 *号,char *str2 = “aaa”;就是用一个char型指针指向一个常量字符串“aaa”,两个都是指针但然满足strcpy的参数要求啊
PS:你可以更改str2指向谁,但是不能通过*str2(解引用)去修改“aaa”,它是常量,放在常量区,是不可以修改的。
所以strcpy(str1,str2);可以
strcpy(str2,str1);不行





上一篇:新手自学QT5.1.2 一个星期后,遇到新问题,再来求助。
下一篇:求指点,这个vs2013的帮助文档MSDN,如何打开使用?
39_avatar_middle
最佳答案
1 
在线会员 发表于 2021-9-10 08:07:44 | 显示全部楼层    本楼为最佳答案   
bestAnswer
本帖最后由 取名难 于 2021-9-10 08:22 编辑

首先,char str1[0] = {0};这句语句表面上是你定义了一个char数组大小由后面初始化(即{}中的元素)来决定,大小为1的字符数组;但是在计算机看来你是定义了一个char指针指向数组的起始地址str1[0],你可以通过str1[0~N]访问里面的元素,也可以通过*(str1+0~N)起始地址加偏移量来访问,数组在计算机看来就是指针。
你在str1定义了一个char型的大小但是通过str2赋值了3个字节大小的值,这样是不对的,但是编译器没有报错,原因是有可能str1后面的内存没有用上,所以就没有报非法访问内存的错误(段错误),但不是次次都是这么好运的,一旦非法访问,程序就崩了
可以使用strcpy的带大小的版本char *strncpy(char *destinin, char *source, int maxlen);由用户指定拷贝多大的内存空间的数据。

str2 好像少写了一个 *号,char *str2 = “aaa”;就是用一个char型指针指向一个常量字符串“aaa”,两个都是指针但然满足strcpy的参数要求啊
PS:你可以更改str2指向谁,但是不能通过*str2(解引用)去修改“aaa”,它是常量,放在常量区,是不可以修改的。
所以strcpy(str1,str2);可以
strcpy(str2,str1);不行

评分

参与人数 1威望 -3 驿站币 +15 热心值 +3 收起 理由
75_avatar_small wl1383838438 -3 + 15 + 3 赞一个!

查看全部评分

75_avatar_middle
最佳答案
21 
online_supermod 发表于 2021-9-10 09:01:18 | 显示全部楼层
取名难 发表于 2021-9-10 08:07
首先,char str1[0] = {0};这句语句表面上是你定义了一个char数组大小由后面初始化(即{}中的元素)来决定 ...

通俗易懂,还不失水准一个简单的strcpy定义求助
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2021-9-27 06:32

Powered by CcTry.CoM

© 2009-2021 cctry.com

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