
假设我做了一个递归函数来恢复char *但是根据我如何初始化它我得到了一些访问违规,并且在我的C入门中我没有找到任何给我正确的理解路径所以我正在寻求你的帮助.
情况1
在尝试交换字母时我遇到访问冲突的第一种情况:
char * bob = "hello";
案例2然后我尝试了这个让它工作
char * bob = new char[5];bob[0] = 'h';bob[1] = 'e';bob[2] = 'l';bob[3] = 'l';bob[4] = 'o';
情况3但是当我做了一个cout时,我最后得到了一些随机的垃圾,所以我换了它
char * bob = new char[6];bob[0] = 'h';bob[1] = 'e';bob[2] = 'l';bob[3] = 'l';bob[4] = 'o';bob[5] = 'char * bob = new char[6]; bob = "hello';char* bob[];";
案例4那是有效的,所以我告诉自己为什么这不会起作用
char * bob = new char[6];bob = "hellochar * bob = new char[6];strcpy(bob,"hello");";
情况5,它失败了,我也读过你可以做某事的地方
strncpy(bob,"hello",6);
然后添加一些东西.
我的问题是为什么有些失败而其他失败,最好的方法是什么?
在任何情况下,关键是使用new关键字,这是在读/写内存中分配空间,因此您可以更改该内存.
这种说法是错误的
因为您正在更改指针而不是复制数据.你想要的是这个:
要么
你不需要这里的nul因为字符串常量“hello”将使编译器放置null.
总结以上是内存溢出为你收集整理的为什么我的char *可写,有时只能在C中读取全部内容,希望文章能够帮你解决为什么我的char *可写,有时只能在C中读取所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)