字符串拷贝

 

我们先给出两条语句,我们要探讨的是能否把第二句中的str2拷贝给第一句中的str1

char *str1="abcd";
char str2[]="abcde";

 

首先自然涉及到一个存储问题,存储空间的不一样或者是空间大小的不同都会出现问题:str1整个在32平台上占四个字节,str2占六个字节.

str2[]的存储方式我们可以清晰地给出:

 

字符串是清晰的存储在字符数组中,一个字母占用一个字节,外加\0结尾占用一个字节.

 

 

至于前者指针的情况,它占用四个字节如何去存储五字节的字符串(还有\0结尾),所以说直接进行字符串的拷贝肯定会出错.事实上前者的数据是存储在了常量区,原指针只是保存了"abcde"在常量区的地址:

即*str=1000,既然放在了常量区则指针就只能进行写操作而不能修改常量.另外还要注意区分是否是越界的情况,如strcpy_s("sfdsddf","rtyuio"),问题并不是出再来越界上,从根本上来说是因为前者是常量,常量又怎末可以修改常量.

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值