字符串操作函数strcpy(str1, str2)的效果

       在学习C语言的过程中有些初学者对字符串操作函数strcpy(str1, str2)的效果有疑问,到底strcpy是将字符串str2覆盖全部的str1,还是复制过去后str1中未被占用的空间还保存着原来的字符呢?

我们可以通过指针的偏移来理解这个问题.


在Xcode中运行一段程序:



可以看到在经过strcpy复制后,str1 输出字符串确实只输出了 lm . 我们让指向str1首字母的指针p偏移致第三位(p + 2),输出为空,此位置就是str2的'\0'位,但是我们再让指针偏移1位得到输出结果为def.可见str1字符串此时类似于 {'l', 'm', '\0', 'd', 'e', 'f', '\0'}.因为printf打印时读到'\0'是默认输出结束,后面部分不再输出.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值