二维数组名和地址的关系

如题所述

二维数组名即数组地址,指向首行地址,不是指针的指针。表面上看,行地址即一维数组指针,而数组名指向行就应该是指针的指针。
👀地址类型
所以a[10][10]的地址类型不是简单的指针的指针,而是行指针的指针,而行宽是由你定义的数组列数和元素类型所决定,int类型就是4*10=40个字节。这叫数据对齐。
🤔指针类型
因此编译器在转换数组名时,会根据对齐要求而确定相应的指针类型,所以a的地址类型应该是int (*)[10],而不是int **。
👨‍💻指针运算
其含义为,p是一个指向(含10个int类型元素的一维数组或行的)指针,其实本质上任何指针都是4字节(32位系统),你完全可以将一种指针类型强制转为任何其他类型,那为什么还要区分指针类型,就是为了指针运算时实现数据对齐,准确定位。

温馨提示:答案为网友推荐,仅供参考
相似回答