gpt4 book ai didi

c++ - 将动态二维数组的返回指针传递给子函数并寻址该数组

转载 作者:行者123 更新时间:2023-11-28 08:09:36 25 4
gpt4 key购买 nike

我的问题如下:我正在创建指向堆上动态二维数组的指针。这是在子函数“Production”中完成的,该子函数填充表(数组)的元素并将数组的指针返回到 main()。在那里我想将指针作为另一个函数“PrintTable”的参数;哪个 cout 是 table 。我的问题是返回的指针实际上是一个一维数组 (c++),我不知道如何处理它以获得数组的第二行。让我试着向您解释一下:

所以首先我有一个函数,它返回一个指向二维数组的指针。

int* Production(int num1, string name1[], int num2, string name2[])
{

int** productionTable=new int*[num1];
for (int i = 0; i < num1; i++)
{
productionTable[i] = new int[num2];
}


for (int i=0;i<num1;i++)
{
cout << "\nGive production " << name1[i]<<endl;
for (int j=0;j<num2;j++)
{
cout << "On " << name2[j] << " : ";
cin >> productionTable[i][j];
}
}
return* productionTable;
}

在 main() 中我让返回的指针指向一个指针 productiontable 所以它存在于 main 中。

int* productionTable=Production(num1, name1[], num2, name2[])

然后我调用函数 printTable() 必须将二维数组输出为表格。所以我想用这个指针作为另一个函数的参数;从这个数组中计算出元素。

PrintTable(num1, name1[], num2, name2[], productionTable);

这个函数看起来像这样:

void printTable(int num1, string name1[], int num2, string name2[],int* productionTable)
{
cout << left <<setw(10)<< "";
for (int i=0;i<num2;i++)
{
cout << left <<setw(10)<< name2[i];
}
cout<<endl;
for (int i=0;i<num1;i++)
{
cout << setw(10)<<name1[i]<<"";
for (int j=0;j<num2;j++)
{
cout << left <<setw(10)<< productionTable[i+j];

}cout<<endl;
}
}

我的问题是我无法获得正确输出第二行的功能。我应该如何处理数组的第二个参数。到目前为止,我已经读过我应该让表指向 [COLindex * COL_size + ROWindex]。我试过了,但我没让他打印第二行。 COL_size 参数应该是多少?

最佳答案

这是你的问题:

int** productionTable=new int*[num1];
...
return* productionTable;

基本上,通过返回,您只返回第一行(或指向它的指针)而丢弃表的其余部分。要使其工作,您可以将 ProductionproductionTable(在所有位置)声明为 int**return productionTableProduction 中使用 productionTable[i][j] 进行元素检索。

关于c++ - 将动态二维数组的返回指针传递给子函数并寻址该数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9455008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com