我添加了一些調試代碼。 int matrix[MATRIX_ROW][MATRIX_COL];
語句爲matrix
分配內存,但不會初始化元素值。這些值將是先前內存使用的任何位模式。我將matrix
元素值初始化爲-1
的意外值。最後,我打印了matrix
。
#include <iostream>
#include <cstdlib>
using namespace std;
const int MATRIX_ROW = 5;
const int MATRIX_COL = 5;
int** rainGen(int **theMatrix_ptr_ptr, int rows);
int main()
{
int matrix[MATRIX_ROW][MATRIX_COL];
// initialize matrix elements to -1.
for (int i = 0; i < MATRIX_ROW; ++i)
for (int j = 0; j < MATRIX_COL; ++j)
matrix[i][j] = -1;
int *matrix_ptr[MATRIX_ROW];
int **matrix_ptr_ptr = &matrix_ptr[0];
int rows = 3; // error
for (int i = 0; i < MATRIX_ROW; i++)
matrix_ptr[i] = &matrix[i][0];
rainGen(matrix_ptr_ptr, rows);
// print matrix elements.
for (int i = 0; i < MATRIX_ROW; ++i) {
for (int j = 0; j < MATRIX_COL; ++j)
cout << " [" << i << "," << j << "] " << matrix[i][j];
cout << endl;
}
return 0;
}
int** rainGen(int **theMatrix_ptr_ptr, int rows)
{
srand(1023);
for (int i = 0; i < rows; i++)
for (int j = 0; j < MATRIX_COL; j++)
*((*theMatrix_ptr_ptr + i) + j) = rand() % 100; //error
return theMatrix_ptr_ptr;
}
輸出:
[0,0] 8 [0,1] 53 [0,2] 30 [0,3] 51 [0,4] 40
[1,0] 88 [1,1] 60 [1,2] -1 [1,3] -1 [1,4] -1
[2,0] -1 [2,1] -1 [2,2] -1 [2,3] -1 [2,4] -1
[3,0] -1 [3,1] -1 [3,2] -1 [3,3] -1 [3,4] -1
[4,0] -1 [4,1] -1 [4,2] -1 [4,3] -1 [4,4] -1
你可以從matrix
元素看到的-1
一個值,你是不是給matrix
隨機值的所有元素。
作爲一個有幫助的提示,我用// error
評論標註了兩個特別感興趣的聲明。
一旦你有固定的問題,輸出應該是這個樣子:
[0,0] 8 [0,1] 14 [0,2] 19 [0,3] 36 [0,4] 99
[1,0] 53 [1,1] 45 [1,2] 20 [1,3] 64 [1,4] 3
[2,0] 30 [2,1] 51 [2,2] 40 [2,3] 88 [2,4] 60
[3,0] 22 [3,1] 36 [3,2] 42 [3,3] 1 [3,4] 49
[4,0] 96 [4,1] 24 [4,2] 48 [4,3] 92 [4,4] 46
如果您正在使用C++顯然,更好'''使用可用的新功能'一樣''default_random_engine '''''uniform_int_distribution''等。 –
gongzhitaao
2013-03-25 05:15:12