【发布时间】:2013-05-04 12:24:31
【问题描述】:
我必须实现一组分配、修改和释放 c 样式字符串的二维数组的方法。我不能使用字符串、向量或任何 stl 容器。
getNewMat:
char*** getNewMat(int w, int h){
char*** newMat = new char**[h];
for(int i = 0 ; i < h ; i++){
newMat[i] = new char*[w];
for(int j = 0 ; j < w ; j++)
newMat[i][j] = NULL;
}
return newMat;
}
填充垫
void fillMat(char***mat, int x, int y, char* newEl){
mat[y][x] = newEl; //this will produce a segfault (even with good index)
}
表演垫:
void showMat(char*** mat, int w, int h){
for(int i = 0 ; i < h ; i++){
for(int j = 0 ; j < w ; j++)
cout << mat[i][j];
}
cout << endl;
}
那么,谁能告诉我这是怎么回事?
【问题讨论】:
-
在
showMat中,您使用h作为两个循环的限制。j循环应该使用w。 -
更好的解决方案,我可以在这里看到:您应该实现自己的类
string并使用它而不是char*。 -
这是一种可能性,但无论如何我想知道为什么这不起作用,因为理解本身(另外我担心这表明缺乏对基本机制的理解)
标签: c++ c multidimensional-array