c++函数创建一个二维数组并返回一个指向该二维数组的指针
c++ Function creates a 2-d array and returns a pointer to the 2-D array
我是c++新手,正在学习使用指针和数组。我有一个艰难的时间与一段代码,正在编译,似乎正在做它应该做的,除了在主函数的指针的输出似乎是一个内存地址,所以我必须在我调用或返回指针的方式错过了一些东西。(我希望我的术语是正确的)
在main函数中,我创建了一个指针变量并将其初始化为null(教授建议初始化所有变量)
int** ptr1=NULL;
接下来,我设置指针等于我的函数,这将创建数组
ptr1 = makeArray1();
这是我的函数的代码。
int** makeArray1()
{
const int ROW = 2;
const int COL = 3;
int** array1 = new int* [ROW]; //This creates the first row of cols
for (int i = 0; i < ROW; i++)
{
array1[i] = new int[COL]; //loop to create next col of all rows
}
for (int i = 0; i < ROW; i++)
{
for (int j = 0; j < COL; j++)
{
cout << endl << "Please enter an integer in the first matrix: ";
cin >> array1[i][j];
}
}
cout << endl;
for (int i = 0; i < ROW;i++)
{
for (int j = 0; j < COL; j++)
{
cout << setw(4) << array1[i][j];
}
cout << endl;
}
cout << endl << endl << "In array 2 array2 = " << *array1;
return array1;
}
数组似乎很好地填充了我的输入,但是当我在main函数中打印ptr1时,它返回一个内存地址,而不是输入到数组中的数字。
打印指针将打印指针的值。这是一个内存地址。如果你想看到2d数组开头的值,你需要取消对指针的引用。
try declare: int** array1 = new int* [ROW];在函数外,如果可以
ptr1是指针。难怪你会得到一个内存地址,因为指针就是一个内存地址。如果要输出数组的内容,就必须对指针解引用。像这样:
for(int i=0; i < ROW; i++) {
for(int j=0; j < COL; j++) {
cout<<ptr1[i][j];
}
}
相关文章:
- C++ 中的二维数组初始化为一个值
- 如何将 50 行和 50 列的二维数组编码为一个为元素随机分配星号的函数?
- 编写一个可以使二维数组平坦的函数
- 从文本文件读取到表示一个月的二维数组中
- 我需要一个在C 中具有一个动态维度的二维数组
- 使用 Win32 中的 HBITMAP 绘制一个二维数组,C++
- 在C++中将一个二维数组复制到其他未知大小的二维数组
- 是一个二维数组的名称,它在C++中的第一个元素的地址
- 如何创建一个一维数组来容纳几个二维数组
- 如何将一个巨大的二维数组初始化为类中的空间
- 如何设置二维数组一个二维返回
- 将二维数组元素复制到另一个具有其他大小的二维数组中
- visual C++将整数的二维数组插入到另一个整数的二维阵列中
- C++2d地图?就像一个二维数组
- 当您有一个二维数组(C++)时调用析构函数的正确方法是什么?
- 从函数返回一个二维数组
- 我如何知道一个位置指针在二维数组的行数
- 如何使用一个动态创建的一维数组的二维数组引用仅与标准库?
- 如何散列一个三态二维数组
- 当我尝试输出一个二维数组时,它输出了错误的数字