char* A ;char*B strcpy(A,B)出错

今天突然用到strcpy()函数

于是

char* A = "ABCDEFG";

char* B = "GGGG";

strcpy(A,B);

编译通过,但是运行竟然直接结束了,报错;

 

为什么呢?

因为char * A = “ABCDEFG”;

"ABCDEFG"这是个const性质的,那么它存在于静态存储区,A指针指向静态存储区,但是不能改变它的值

所以不能使用strcpy函数

 

而 char a[] = "abcdf";

char b[] = "cds"

strcpy(a,b);

可以达到想要的效果,因为

char a[] = "abcdef";这个“abcdef”还是在静态存储区,但是会有有一份副本用于初始化数组a在栈上;

所以可以修改!

 

 

很多知识敲代码遇到错误才会学会,上面的原因用到的知识点以前知道,但是还是写出了错误的代码,错了才思考为什么错的,然后才想起来学过的知识点;

所以多写代码!!!在错误中学习。

 

 

  • 2
    点赞
  • 1
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页
评论

打赏作者

威少mvp

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值