BeautifulSoap
313 天前
楼上这么多人甚至都没人回答到点的,你们不会连 c 都没学过吧。。。
但凡学过 c 这类底层点的语言也不会问出这种问题。。。
因为数组本质上是一个指向一整块连续内存块的指针(即存储了一块内存的地址),访问数组元素本质上就是对指针做加法操作。
比如数组 a 指向的内存块地址是以 0x0001 为起点的一块连续内存,这样 0x0001 这个位置的数据就是第一个元素。要取第一个元素的话就直接获取 0x0001 + 0 处的元素,要获取第二个元素的话就是去获取 0x0001+4*1 这个地址下的数据(假设这个数组是存储了 32bit 共 4 自己长度的 int 元素的数组),获取第三个元素就是 0x0001+4*2 。就这么简单的理由,数组中下标指代的就是*1 *2 这里的数字,本质上就是一个“语法唐”
至于其他语言里“数组”可能并非真数组,可变长度的“数组”并非原始严格意义上的数组。但是为了保持一直以来的使用习惯,也采用了一模一样的下标用法