鱼C论坛

 找回密码
 立即注册
查看: 1914|回复: 16

[已解决]关于列表,我这么理解可以吗?

[复制链接]
发表于 2022-3-15 22:53:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 竹逸 于 2022-3-17 00:55 编辑

列表的下标为什么从0开始,而不是从1:

大多数编程语言的约定:

因为计算机只能看得懂二进制数0和1,而0作为最小的数也就被约定成为默认起始值

所以物理内存的起始地址都是从0开始的(用十六进制0x00表示第一个字节,它是内存地址的下标),而列表名指向的就是该列表存储在内存中的首地址(列表名的值是一个指针?)

列表的下标是相对于首地址的偏移量,第一个元素是从首地址0x00开始存储的(相对地址),因为偏移量为0下标自然也就为0

也因为下标是偏移量,也就解释了为什么索引的范围是左闭右开



第一个元素的下标是0(正0),那倒数第一个元素的下标为什么是-1,而不是-0?


因为-0的值也是0,而下标是0的元素是列表中第一个元素,所以倒数第一个元素的下标不能为-0,不然就和第一个元素下标重复,倒数第一个元素就规定为-1,以此类推,倒数第二个元素就是-2……
最佳答案
2022-3-15 23:01:35
完全正确,看来兄弟得道了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-3-15 23:01:35 | 显示全部楼层    本楼为最佳答案   
完全正确,看来兄弟得道了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-15 23:02:21 | 显示全部楼层
列表的下标是偏移量,那下标也是一个内存地址?(首地址+偏移量)

6,7年前学过鱼哥的C基础,后来就没学了,还记得一点东西,我这么理解有误吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-15 23:05:26 | 显示全部楼层
竹逸 发表于 2022-3-15 23:02
列表的下标是偏移量,那下标也是一个内存地址?(首地址+偏移量)

6,7年前学过鱼哥的C基础,后来就没学 ...

下标不算个地址吧,我觉得下标相当于元素与列表地址的相对位置,

而列表地址是由列表第一个元素的地址来充当的,

就像火车的位置得有个标准,就以火车头为准
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-15 23:07:41 | 显示全部楼层
isdkz 发表于 2022-3-15 23:01
完全正确,看来兄弟得道了

谢谢,你的肯定是对我最大的鼓励,我还担心自己会不会理解错了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-15 23:11:56 | 显示全部楼层
isdkz 发表于 2022-3-15 23:05
下标不算个地址吧,我觉得下标相当于元素与列表地址的相对位置,

而列表地址是由列表第一个元素的地址 ...

既然是相对位置,那也是相对于物理内存地址的位置啊,我觉得也是个内存地址
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-15 23:13:46 | 显示全部楼层
竹逸 发表于 2022-3-15 23:11
既然是相对位置,那也是相对于物理内存地址的位置啊,我觉得也是个内存地址

你也可以这么理解,不过内存地址的说法不是针对绝对位置的吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-15 23:22:48 | 显示全部楼层
isdkz 发表于 2022-3-15 23:13
你也可以这么理解,不过内存地址的说法不是针对绝对位置的吗?

绝对地址无论是什么,但偏移量是不变的啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-15 23:41:56 | 显示全部楼层
isdkz 发表于 2022-3-15 23:13
你也可以这么理解,不过内存地址的说法不是针对绝对位置的吗?

我的理解是计算机要读取列表中的某个元素的数据,那自然得先找到存放该元素的物理内存地址,而正好可以通过列表名(是个指针?)+元素的偏移量得到该元素的绝对地址,然后才成功的读取到该元素存放的数据
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-15 23:43:27 | 显示全部楼层
竹逸 发表于 2022-3-15 23:41
我的理解是计算机要读取列表中的某个元素的数据,那自然得先找到存放该元素的物理内存地址,而正好可以通 ...

好吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-16 00:15:43 From FishC Mobile | 显示全部楼层
本帖最后由 竹逸 于 2022-3-16 00:17 编辑
isdkz 发表于 2022-3-15 23:43
好吧


思考了下,我觉得你是对的,偏移量只是个十六进制数,但不是内存地址,只有当元素进行读取运算的时候才会拿取该偏移量+首地址组成一个真正的物理内存地址
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-16 07:20:04 | 显示全部楼层
本帖最后由 isdkz 于 2022-3-16 07:22 编辑
竹逸 发表于 2022-3-16 00:15
思考了下,我觉得你是对的,偏移量只是个十六进制数,但不是内存地址,只有当元素进行读取运算的时候才 ...


嘻嘻,学习就是要不断地推倒重建
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-16 07:24:37 From FishC Mobile | 显示全部楼层
相比c语言而言,列表最nb的是切片,推导式,各种方法,而这些c都需要自己写代码去实现

评分

参与人数 1荣誉 +5 贡献 +3 收起 理由
isdkz + 5 + 3 鱼C有你更精彩^_^

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2022-3-16 11:07:48 From FishC Mobile | 显示全部楼层
wp231957 发表于 2022-3-16 07:24
相比c语言而言,列表最nb的是切片,推导式,各种方法,而这些c都需要自己写代码去实现

是的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-16 11:20:32 From FishC Mobile | 显示全部楼层
本帖最后由 竹逸 于 2022-3-16 23:37 编辑

0000
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-3-16 11:49:55 From FishC Mobile | 显示全部楼层
本帖最后由 竹逸 于 2022-3-16 23:32 编辑

0000
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-3-16 14:40:20 From FishC Mobile | 显示全部楼层
本帖最后由 竹逸 于 2022-3-16 14:44 编辑

0000
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-29 17:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表