发布网友
共2个回答
热心网友
首先 这是个二维数组,以行和列为维度。a[3][3]只是代表了二维数组的行和列的长度这个是他数据存储的大致结构:
1 2 3
4 5 6
7 8 9
关于为什么要去掉里边的33才可以,这个可能是不同的编译器问题。如果你输入了具体的数据,想你的那个它会自动默认二维数组的大小。
补充回答:
我用Eclipse跑了一下,结果是5.0
热心网友
// 如果每一维的长度都可能不固定,可以像这样:
int d1 = 2, d2 = 3, d3 = 4;
int ***p = new int**[d1];
for(int i = 0; i < d1; i++) {
p[i] = new int*[d2];
for(int j = 0; j < d2; j++) {
p[i][j] = new int [d3];
for(int k = 0; k < d3; k++) {
p[i][j][k] = 123;
}
}
}
//释放:
for(int i = 0; i < d1; i++) {
for(int j = 0; j < d2; j++) {
delete[] p[i][j];
}
delete[] p[i];
}
delete[] p;
//如果只有第一维的长度不固定,这样:
int (*q)[3][4] = new int[d1][3][4];
//……
//释放:
for(int i = 0; i < d1; i++) {
for(int j = 0; j < 3; j++) {
for(int k = 0; k < 4; k++) {
q[i][j][k] = 123;
}
}
}
delete[] q;