我是c ++的新手,我正在学习使用指针和数组。我正在努力编写一段代码并且似乎正在做它应该做的事情,除了main函数中指针的输出似乎是一个内存地址,所以我必须错过一些我的方式我正在调用或返回指针。 (我希望我的术语正确)
在我的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时,它返回一个内存地址而不是输入到数组中的数字。
任何帮助都将不胜感激。
答案 0 :(得分:0)
尝试声明:int ** array1 = new int * [ROW]; 在你的职能之外,如果可以的话
答案 1 :(得分:0)
打印指针将打印指针的值。哪个是内存地址。如果要查看2d数组开头的值,则需要取消引用指针。
答案 2 :(得分:0)
ptr1是一个指针。难怪你得到一个记忆地址,因为指针是一个记忆地址。如果要打印数组的内容,则必须取消引用指针。 像这样:
for(int i=0; i < ROW; i++) {
for(int j=0; j < COL; j++) {
cout<<ptr1[i][j];
}
}