>>No.65277831
(;´Д`)昨晚试过了但太晚了总结着总结着睡着了抱歉
问了AI后醍醐灌顶了!
arr[a][b]==a[arr][b],arr[b][a]==b[arr][a],a和b是整形这些式子也都成立,说明一个问题,[ ]本质是指针运算符,并非和数组绑定,arr在这里就已经是指针了。
[ ]的运算步骤:
1.左右两边一个给个指针,一个给个整数,根据这俩算出偏移后的 新指针。
2.返回新指针解引用的参数。
至于为什么又要取名数组下标运算符,因为其他变量的指针都是散装的,只有数组这种连续的指针才对[ ]这种上下精确偏移一位两位的查找有意义,不然一访一个越界。
所以数组的本质是把指针加减算式换成了直观好看的套皮算式,毕竟一般人谁想得到要把括号当运算符看(・∀・)但本质就是算式
数组arr[x]在定义时就是快速创建*arr~*(arr+x),数组arr[x][y]定义时是先创建*arr~*(arr+x),再以这x个为最小单位创建y个
访问时就是先计算一维数组的指针arr[x](类型是int* [y]),再计算arr[x]+y(以[y]长度为单位跳跃查找)。
以此类推,n维数组在定义时是从一维开始一层一层往外计算,本质上就是从*arr然后把*arr到*(arr+x*y*z*…)之间的所有地址都初始化,访问时从n-1维开始访问,一层减一维,一层一层跳,到最后锁定确定的某一个元素
从内存上看就是线性的连续的一条而已,但确实可以模拟出多维的感觉,真的很妙(σ゚д゚)σ
感觉是很有趣的知识,后面学指针也许会学?总之提前加深印象了,感激不尽!祝好肥哥头发越长越茂密,越码越年轻口牙(`ヮ´ )