在学习二维数组的动态分配,写出了以下代码,怎么捣鼓也不对,总算想通了。写于此,分享一下。答案在后面,白底白字(已修改)。在不上机调试的情况下,能找出来吗?
#include <stdio.h>
//#include <string.h>
int main()
{
char* a[10];
int i = 0;
for (; i < 10; i++)
{
a[i] = new char[20];
}
for (; i < 10; i++)
{
for(int j = 0; j < 20; j++)
{
a[i][j] = '1';
}
}
for (; i < 10; i++)
{
printf("%s\n", a[i]);
}
for (; i < 10; i++)
{
delete[] a[i];
}
return 0;
}
1,后面for循环的初始值变量没有赋值,执行过第一个循环后,i == 10,不符合循环条件,跳过,后面循环亦是如此。
2,a[ i ][ j ] = '1',且 j 从 0 到 19,其后面没有'\0',输出时,你懂的。
这个错误给了我一个教训啊。