c语言数据结构首页投稿(暂停使用,暂停投稿)

C语言数组的升维与降维之说

2016-07-24  本文已影响290人  遮天的龙

C语言数组的升维与降维之说

当在二维数组的时候
*可以把二维数组名降级为一维数组名
&可以把一维数组名升级二维数组名
Type a[3][4]
一维数组名的成员是单个存储单元 那么步长就是sizeof(TYPE)
成员指针类型是TYPE*
二维数组名的成员是一维数组名 步长就是sizeof(一维数组名)
成员指针类型是Type[4] *

C语言数组的升维

比如:int array[3][4];
array是二维数组名 
a[0] a[1] a[2] a[3]分别是二维数组的成员也是一维数组名 
指针类型是int[4] 一维数组的成员指针类型是int *
*(array+1) array是二维数组名降为一维数组名array[1];
array指针类型是int[4] * ,现在*(array+1)的指针类型是int*
*(array+1)==array[1]; 那么就可以使用*(array+1)去对array[1]的成员访问了
eg: array[1][2]==*(*(array+1)+2)

C语言数组的降维

&array[1] array[1]是一维数组名 加上&以后升级为二维数组名 array+1;
&array[1]==array+1;
array[1]的指针类型是int* ,而&array[1]的指针类型是int[4]* 升级了

&是引用 *是解引用 一个是降级一个是升级 两者关系是互为逆向关系

一维数组名是一级指针 但是二维数组名不是二级指针 是数组指针
一个是int* 一个是int[4] *
上一篇下一篇

猜你喜欢

热点阅读