c++二级指针的使用问题

#include
using namespace std;

int** change(int pLine[])
{
int
*a=new int*[4];
for(int m=0;m<4;m++)
{
for(int n=0;n<2;n++)
a[m][n]=pLine[n][m];
cout<<endl;
}
return a;
}

int main()

{
int **a;
int line1[]={1,2,3,4};
int line2[]={5,6,7,8};
int pLine[2]={line1,line2};
a=change(pLine);
for(int m=0;m<4;m++)
{
for(int n=0;n<2;n++)
cout<<
(*(a+m)+n);
cout<<endl;
}
}

你这个能编译能通过?

你的第二维也需要new int,也就是change函数里的第二维需要new int[2]

 #include<iostream>
using namespace std;

int** change(int *pLine[])
{
    int**a = new int*[4];
    for (int m = 0; m<4; m++)
    {
        a[m] = new int[2];
        for (int n = 0; n<2; n++)
            a[m][n] = pLine[n][m];
        cout << endl;
    }
    return a;
}

int main()
{
    int **a;
    int line1[] = { 1, 2, 3, 4 };
    int line2[] = { 5, 6, 7, 8 };
    int *pLine[2] = { line1, line2 };
    a = change(pLine);
    for (int m = 0; m<4; m++)
    {
        for (int n = 0; n<2; n++)
            cout << *(*(a + m) + n);
        cout << endl;
    }
}

change的int是一级指针