使用以下代码:
#include <iostream>
#define M 3
#define N 5
using namespace std;
int n;
int m;
int my_array[N][M];
void print_a(){
cout << "array---------------------------------" << endl;
for (int i = 0; i < m; i++){
for (int j = 0; j < n; j++){
cout << my_array[i][j] << " ";
}
cout << endl;
}
}
int main() {
n = N;
m = M;
int j = n - 1;
for (int i = 0; i < m; i++){
my_array[i][j] = i + j;
print_a();
}
return 0;
}
阵列---------------------------------
0 0 0 0 4
0 4 0 0 0
0 0 0 0 0
阵列---------------------------------
0 0 0 0 4
0 4 0 0 5
0 5 0 0 0
阵列---------------------------------
0 0 0 0 4
0 4 0 0 5
0 5 0 0 6
双列阵中的两个单元格被更改。我知道双数组也是单数组。所以,即使是col和row也要交换。不应该有两个细胞被改变。这是为什么?
答案 0 :(得分:1)
在打印功能中将m换成m。
#include <iostream>
#define M 3
#define N 5
using namespace std;
int n;
int m;
int my_array[N][M];
void print_a(){
cout << "array---------------------------------" << endl;
for (int i = 0; i < n; i++){
for (int j = 0; j < m; j++){
cout << my_array[i][j] << " ";
}
cout << endl;
}
}
int main() {
n = N;
m = M;
int j = n - 1;
for (int i = 0; i < m; i++){
my_array[i][j] = i + j;
print_a();
}
return 0;
}
array--------------------------------- 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 array--------------------------------- 0 0 0 0 4 0 0 5 0 0 0 0 0 0 0 array--------------------------------- 0 0 0 0 4 0 0 5 0 0 6 0 0 0 0
代码中的问题:最后一列中的数字实际上是下一行的值(第二列)。这是由于您机器上的2D阵列的cpp布局。 link