内存出问题???

yimixiaoxiong 2009-04-18 04:23:16
#include<iostream>
#include <string>

using namespace std;

int main(void)
{
char string[10] = "123456";
char *str1 = "abcdefghij";


cout<<strlen(string)<<endl;
string[4]='\0';
cout<<strlen(string)<<endl;
string[2]='\0';
cout<<strlen(string)<<endl;

cout<<strlen(str1)<<endl;

str1[6]='\0';
cout<<strlen(str1)<<endl;
str1[2]='\0';
cout<<strlen(str1)<<endl;

cout<<string<<endl;
cout<<str1<<endl;

return 0;
}
如题,蓝色部分出现内存错误,不知为什么?望大牛指点啊

还有关于C语言和c++语言中下列概念有什么区别和值得注意的吗?是不是只有字符数组才需要有结束符?感觉有些混淆
1、字符串
2、数组
3、字符数组
4、字符串数组
...全文
69 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yimixiaoxiong 2009-04-18
  • 打赏
  • 举报
回复
哦,明白了,谢谢大家
zgjxwl 2009-04-18
  • 打赏
  • 举报
回复
首先。。你就不要把数组名写为string
renshangyuan1988 2009-04-18
  • 打赏
  • 举报
回复
已经定义了 char *str1 = "abcdefghij";
   则 str1[6]='\0';  
  str1[2]='\0';
修改错误
  • 打赏
  • 举报
回复

int main(void)
{
char string[10] = "123456";    
char *str1 = "abcdefghij";     


cout < <strlen(string) < <endl;     
string[4]='\0';
cout < <strlen(string) < <endl;
string[2]='\0';
cout < <strlen(string) < <endl;

cout < <strlen(str1) < <endl;

str1[6]='\0';            //违例是因为char *str1 = "abcdefghij"; 是指向const char * 的指针,是不能被修改的.
cout < <strlen(str1) < <endl;
str1[2]='\0';
cout < <strlen(str1) < <endl;

cout < <string < <endl;
cout < <str1 < <endl;

return 0;
}

qqwx_1986 2009-04-18
  • 打赏
  • 举报
回复
[Quote=引用楼主 yimixiaoxiong 的帖子:]
#include <iostream>
#include <string>

using namespace std;

int main(void)
{
char string[10] = "123456";
char *str1 = "abcdefghij"; //str1是指向字符串常量的一个指针


cout < <strlen(string) < <endl;
string[4]='\0';
cout < <strlen(string) < <endl;
string[2]='\0';
cout < <strlen(string) < <endl;

cout < <strlen(str1) < <endl;

str1[6]='\0'; //改非法

[/Quote]
老邓 2009-04-18
  • 打赏
  • 举报
回复
所以:char *str1 = "abcdefghij";
写成 const char *str1 = "abcdefghij";
更好,免得误改了。
老邓 2009-04-18
  • 打赏
  • 举报
回复
char *str1 = "abcdefghij"; 的值是静态字符串,不能更改的,否则内存非法。
lingyin55 2009-04-18
  • 打赏
  • 举报
回复
lz你上面的代码是想干什么的?

还有关于C语言和c++语言中下列概念有什么区别和值得注意的吗?是不是只有字符数组才需要有结束符?感觉有些混淆
1、字符串 //系统会自动在后面加上结束符
2、数组 //数组的系统不会加结束符,要的话得自己加'\0',下面的都一样。
3、字符数组
4、字符串数组

是不是只有字符数组才需要有结束符?

字符数组没有说要有结束符,有结束符的是字符串。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧