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 乱码呢
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就修改为ccc乱码,乱码不一定出现,出现是因为未分配值,就好像int a;printf("%d\n",a);一样,会输出垃圾值改完就正常了