0
点赞
收藏
分享

微信扫一扫

数组指针和指针数组

指针数组:int *a[5];

数组指针:int (*a)[5];

指针数组的元素都是int *类型

数组指针的类型都是int 类型

数组指针的正确用法:

int a[2][3];  //二维数组
int (*p)[3]; //列元素为3个的数组指针
p = a;

问1:为啥数组指针要指定列大小

问2:能否把 二维数组名 赋值 给二维指针

int a[2][3];
int **p = a;

问3:能否把 一维数组名的地址 赋值  给 一维指针

int a[2];
int *p = &a;

对于问2:

由于p = a 即p  = &a[0],似乎是正确的,但是a + 1 = &a[1],其步长为sizeof(a[0]) = 4 * 3。

但是p + 1等于多少是未知的,因为没有给p指定列地址,就不知道步长

对于问3:

a + 1 = sizeof(&a) = 4 * 2

而p未知

上面两问就解释了问1

总结:

凡是数组指针都要指定列长

二维数组指针要指定一维的长度

三维数组指针要指定二维和一维的长度

 

 

 

 

 

 

 


举报

相关推荐

0 条评论