有关C++二维指针数组的问题
我想传一个一维数组到一个函数,再从这个函数返回一个二维数组,我知道不能直接传数组做参数,只能用指针,但是程序调了很久都没能通过.还望高手支援一下,谢谢!
[解决办法]
你的做法有问题,不要返回指向数组的指针,而应该用返回二级指针来做.另外,对数组进行间址操作应该是*(*(result+i)+j)这样的.我给你改好了一份在下面:
int** test_fun(int *p)
{
int **hmt;// 定义一个二维数组的指针
int t=0; // 定义一个循环变量
hmt=new int*[2];// 初始化这个二维数组的指针一个指向2*3的空间
for(int k=0;k <2;k++)
{
(*hmt)=new int[3];
}
for (int i=0;i <2;i++)
for (int j=0;j <3;j++)
{
*(*(hmt+i)+j)=*(p+t);// 对该空间用传来的一维数组赋值
t=t+1;
}
return hmt;//返回这个二维数组的指针
//delete [] hmt;//释放空间,其实我不确定该什么时候释放空间???还请指教!
}
int main(int argc, char **argv)
{
int array[6]={1,2,3,4,5,6};
int *p=array;//定义一个指针指向这个一维数组
int **result=test_fun(p); //传递一个一维数组的指针给函数,并从函数返回一个二维数组的指针
for (int i=0;i <2;i++)
for (int j=0;j <3;j++)
cout < <*(*(result+i)+j) < <endl; //逐一输出得到的二维数组的元素
}
[解决办法]
#include <iostream>
using namespace std;
int** test_fun(int *p)
{
int **hmt;//声明一个指向指针的指针
hmt =new int*[2];//分配一个2个元素的指针数组
for (int i=0;i <2;i++)
{
hmt[i]=new int[3];//给每一个指针数组内的每一个指针分配一个3个元素的数组
}
for (i=0;i <2;i++)
for (int j=0;j <3;j++)
{
hmt[i][j]=p[i*2+j];
}
return hmt;
}
int main(int argc, char **argv)
{
int array[6]={1,2,3,4,5,6};
int *p=array;
int **result=test_fun(p);
for (int i=0;i <2;i++)
for (int j=0;j <3;j++)
cout < <result[i][j] < <endl;
for (i=0;i <2;i++)//结束后释放内存
delete [] result[i];
delete [] result;
return 0;
}