提示: 作者被禁止或删除 内容自动屏蔽
比如int arr[]={1,2,3,4,5}
int *p=arr;
p在这里指向arr数组,他的地址是arr数组的首元素地址。
即:p==&arr[0];
比如int arr[]={1,2,3,4,5}
int *p=arr;
p在这里指向arr数组,他的地址是arr数组的首元素地址。
即:p==&arr[0];
我把我的思想说详细点吧,免得让你难得理解:
//在这里我们都假设已经有一个已经被定义过了的数组arr[m][n];
//先前想的是通过指针遍历数组
第一种方法:
int *p;
p=new int[m*n];
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
p[m*i+n]=arr[i][j];
就是定义一个指针,它指向一个大小为(m*n个int)的空间。
然后为这些空间赋值。根据对应的arr元素(动态存储2维数组)
第二种方法:
int *p[m];
for(int i=0;i<m;i++)
p[i]=new int[n];//有m行的2维表,分别为没行给一个指针指向该行的首地址。
for(int a=0;a<m;a++)
for(int b=0;b<n;b++)
p[a][b]=arr[a][b];
//同样的两个2维表,根据其对应的位置对其赋值(动态存储2维数组)
以上是想说,存储2维数组的2种方法。
第一种是用指针;第二种是用指针数组(它也是一个数组:里面的元素是指针)
然后进行动态存储(这里就是简单的1维了)。