【发布时间】:2018-05-02 14:07:13
【问题描述】:
我正在尝试在 C++ 中创建一个指向 2D (5 X 12) 数组的指针数组。 ptr 数组有 5 个元素。每个元素都应保存二维数组相应行的第一个元素的地址。所以第一个元素应该指向第一行的第一个元素,第二个元素应该指向第二行的第一个元素,依此类推。 我的指针数组的第 5 个元素似乎指向一个垃圾值。
代码和输出如下所示。谁能告诉我为什么?
#include <iostream>
#include <cstdlib>
#include <iomanip>
using namespace std;
int main( )
{
int rainMatrix[5][12] = {{0}}; //declare and initialize rain matrix
int *matrix_ptr[5] = {NULL};//declare and initialize array of pointers
int **matrix_ptr_ptr = matrix_ptr;
for (int i = 0; i < 5; ++i)
matrix_ptr[i] = &rainMatrix[i][0];
rainGen(matrix_ptr_ptr, 5, 12); //generate a random matrix
//display the matrix
for (int i = 0; i < 5; ++i) {
for (int j = 0; j < 12; ++j) {
cout << setw(2) << rainMatrix[i][j] << " ";
}
cout << endl;
}
for (int i = 0; i < 5; ++i)
cout << setw(2) << *matrix_ptr[i] << " " << rainMatrix[i][0] << endl;
return 0;
}
void rainGen (int **pptr, int row, int col)
{
unsigned int seed = 43;
unsigned int rv;
srand(seed);
for (int i = 0; i < row; ++i) {
for (int j = 0; j < col; ++j) {
rv = rand() % 100;
**pptr = rv;
*pptr += 1;
}
pptr++;
}
}
输出
11 1
88 11
28 88
25 28
1477892712 25
【问题讨论】:
-
我读对了吗?您是否将指针设置为 rv = rand() % 100; 中的随机值? **pptr = rv; ?
-
@DenizC 不,他正在将指针的内容设置为随机值。
-
@JesperJuhl,真的。我忘了删除我的评论。