今天写代码时,遇见了一个错误。虽说是不小心,但是也反应了自己的基础不扎实。
int m;
cin>>m;
int **index = new int*[m]; //存储直线的参数
*index = new int[3];//错误
for (i = 0; i < m; i++)
{
for (j = 0; j < 3; j++)
{
cin >> index[i][j];
}
}
debug试了一下,发现在 i 的第二次循环时(即i=1),程序中断。
因为*index = new int[3]相当于index[0]=new int[3],此时的数组名相当于数组中的第一个元素,于是在第二次循环时,无法读取index的内存。
正确代码:
int **index = new int*[m]; //存储直线的参数
for (i = 0; i < m; i++)
{
index[i] = new int[3]; //在每次循环时,为数组分配空间
for (j = 0; j < 3; j++)
{
cin >> index[i][j];
}
}