C++ char字符串数组测试

char **p= new char* [3];
for (int i = 0; i < 3; i++)
{
p[i]= new char [3];
}
p[0][0]='a';p[0][1]='a';p[0][2]='a';
p[1][0]='b';p[1][1]='b';p[1][2]='b';
p[2][0]='c';p[2][1]='c';p[1][2]='c';

cout<<p[0][0]<<p[0][1]<<p[0][2]<<endl;
cout<<p[1][0]<<p[1][1]<<p[1][2]<<endl;
cout<<p[2][0]<<p[2][1]<<p[2][2]<<endl;

不是应该输出 aaa bbb ccc吗 为什么我的输出是aaa bbc 乱码呢
最新回答
咱門都要狠快乐≥

2024-06-24 06:17:02

p[0][0]='a';p[0][1]='a';p[0][2]='a';//正确
p[1][0]='b';p[1][1]='b';p[1][2]='b';//正确
p[2][0]='c';p[2][1]='c';p[1][2]='c';//错误
p[2][0]='c';//正确
p[2][1]='c';//正确
p[1][2]='c';//错误
应该把p[1][2]改成p[2][2]
输出结果是aaa bbc cc乱码
bb"c"因为最后一句话,b就修改为c
cc乱码,乱码不一定出现,出现是因为未分配值,就好像int a;printf("%d\n",a);一样,会输出垃圾值
改完就正常了