⼆级指针与⼆维数组
数组与指针:
⼀维:
数组与指针(⼀维指针)的区别就是:
1、数组是⼀段已经分配了内存空间的指针,⽽指针则是尚未分配内存空间的指针,所以数组是定长的,指针是不定长的⼆维:
⼆维数组实际上是⼀个(⼀级指针数组),其中的每⼀项都是⼀个⼀级指针,是⼀个数组的⾸地址
因为⼀维的指针有两种,所以⼆维的指针也有对应的两种:
1、这是第⼀种⼆级指针,⼀维数组指针,就是指向⼀维数组(定长指针)的指针,
它指向的是只含有len个元素的这样的指针(即含有len个元素的数组)
分配空间时直接分配n个len长度的数组空间即可
int len=init();
int (*p)[len];
p=(int(*)[len])malloc(n*len*sizeof(int));sizeof 指针
2、这是第⼆种⼆级指针,普通⼆级指针,它是⼀个指向⼀维指针(不定长指针)的指针,
它指向的⼀级指针尚未分配内存空间,所以当我分配内存空间时,应分步分配,
第⼀,给⼆级指针分配它的长度为len的⼀级指针(即⼀个含有len个元素的指针数组)
第⼆,给这len个⼀级指针分别分配内存空间
int **a;
a=(int**)malloc(sizeof(int*)*len);
for(i=0;i<len;i++)
a[i]=(int*)malloc(sizeof(int)*n);
总结:
当我们已经知道⼀维的长度时,可以直接调⽤数组指针(指针)来指向该长度的指针,分配内存时就可以⼀次性全部分配
⽽我们不知道⼀维的长度时,就必须先分配⼀个指针数组(数组),⽽后再为数组中的每⼀个⼀级指针来分配他们所需要的空间⼤⼩
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论