今天看到C++中关于二维数组的分配问题。
1,自己的想法
int *a[N]; //N表示行数已知
for(int i=0;i<N;i++)
a[i]=new int [m]; //m表示后来又给的列数
2,另外开辟的方法
int * a[N]; //N 表示给得列数
a=new int[m][N]; //m 表示行数
关于int*a[5]与int(*a)[5]的区别:
int *a[5];因为[]比*优先级高,所以它首先是一个数组,然后该数组的元素的类型是int *,所以这是一个指针数组;
int (*a)[5];因为()是超脱于优先级之外的,所以它首先是一个指针,然后该指针指向的类型是int [5],即含有5个元素的数组,所以它是一个数组指针,如果a++,它将跨过五个整型的长度。
int*a[5]是一个数组,其中数组元素为int*指针;int(*a)[5]是一个指针,她指向一个int[5]数组