我认为这是一个简单的问题! 我有2维数组,所有元素都为0! 现在在每次迭代中,我想使其中一列等于1!例如: 输入= {{0,0},{0,0}} out put:= {{1,0},{1,0}},{{0,1},{0,1}} 我写了这段代码,但结果很奇怪!!!!
int main() {
int j = 3;
int arr[5][j] = { 0 };
int dx = 0;
for (int g = 0; g < j; g++) {
for (int t = 0; t < 5; t++) {
arr[t][g] = 1;
}
dx = g;
for (int d = 0; d < 5; d++) {
for (int n = 0; n < j; n++) {
cout << arr[d][n] << " ";
}
cout << endl;
}
cout << "next column=0" << " " << endl;
}
return 0;
}
输出是:
1 -1 64
1 2 0
1 0 4272944
1 65535 0
1 0 56
下一栏= 0
1 1 64
1 1 0
1 1 4272944
1 1 0
1 1 56
下一栏= 0
1 1 1
1 1 1
1 1 1
1 1 1
1 1 1
下一栏= 0
答案 0 :(得分:2)
C ++中的可变长度数组是not allowed。您有几个选项...(通过单击选项编号来查看它们)
定义一个宏:
#define j 3
int arr[5][j] = {0};
定义一个常量变量:
const int j = 3;
int arr[5][j] = {0};
使用动态分配的数组(但请确保在您完成后删除它们,以免导致内存泄漏!)
int j = 3;
int** arr = new int*[5];
for(int i = 0; i < 5; i++)
arr[i] = new int[j];
如果你动态,你需要确保在你完成后解除分配数组:
for(int i = 0; i < 5; i++)
delete [] arr[i];
delete [] arr;
使用C ++标准库容器:
int j = 3;
std::vector<vector<int>> v(5, vector<int>(j, 0));