如果对数组指针与指针数组不明白可以参看 1.一维 函数内部 登录后复制 void main() { int a[3]={1,2,3}; int *b; b= new int[3]; b[0]=*a; *(b+1)=a[1]; b[2]=*(a+2); delete []b; } 1.2.3.4.5.6.7.8.9.10.11.12.13. 函数外部 登录后复制 void newArray(int *&a,int *b){ a=new int[3]; a[0]=*b; *(a+1)=b[1]; a[2]=*(b+2); } void deleteArray(int *&a){ delete []a; } void main(){ int a[3]={1,2,3}; int *b; newArray(b,a); deleteArray(b); } 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17. 2.二维 函数内部 登录后复制 #include <stdio.h> void main() { int a[][3]={ {1,2,3}, {4,5,6}, {7,8,9} }; int (*p)[3]=new int[3][3]; //数据组指针 int *q[3]; //指针数组 q[0]=a[0]; q[1]=a[1]; q[2]=a[2]; // p=a; for (int i=0;i<3;i++) { for(int j=0;j<3;j++){ p[i][j]=a[i][j]; } } printf("\n%d ",sizeof(a)); //36 printf(" %d " ,sizeof(p)); //4 printf(" %d \n" ,sizeof(*p)); //12 delete []p; } 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31. 函数外部 登录后复制 void newArray( int (*&p)[3], int a[][3]){ p=new int[3][3]; for (int i=0;i<3;i++) { for(int j=0;j<3;j++){ p[i][j]=a[i][j]; } } } void deleteArray( int (*&p)[3]){ delete []p; } void main() { int a[][3]={ {1,2,3}, {4,5,6}, {7,8,9} }; int (*p)[3]; newArray(p,a); deleteArray(p); } 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27. 3.三维 函数内部 登录后复制 void main() { int (*p)[3][2] =new int[4][3][2]; for (int i=0;i<4;i++) { for (int j=0;j<3;j++) { for(int k=0;k<2;k++){ p[i][j][k]=i+j+k; printf(" %d ",i+j+k); } printf("\n"); } printf("\n\n"); } delete []p; } 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17. 函数外部 登录后复制 void newArray( int (*&p)[3][2]){ p=new int[4][3][2]; for (int i=0;i<4;i++) { for (int j=0;j<3;j++) { for(int k=0;k<2;k++){ p[i][j][k]=i+j+k; printf(" %d ",i+j+k); } printf("\n"); } printf("\n\n"); } } void deleteArray( int (*&p)[3][2]){ delete []p; } void main() { int (*p)[3][2] ; newArray(p); deleteArray(p); } 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26. 原创作者: u_4937244 转载于: https://blog.51cto.com/u_4937244/11575609