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] *
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。