鱼C论坛

 找回密码
 立即注册
查看: 2230|回复: 20

[已解决]数组

[复制链接]
发表于 2021-9-12 08:40:19 From FishC Mobile | 显示全部楼层
一看 人造人 的回复 就感觉是个高手!感觉人造人不是调试看过函数调用的汇编语言代码,就是学习过相关内容。说的太好了。确实变量之间的空间和编译器有关。也确实编译器对数组和指针变量的越界检查严格程度也不一样。其实大家可以再做一个有趣的实验,如果越界调用,你的编译器不报错,在定义a数组前再多定义几个变量或数组,然后再给a数组多赋值几个,还是可以打印出来。其实你的赋值只要没有覆盖函数返回地址的内存空间,上面的程序一般不会异常中断!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-12 08:43:16 From FishC Mobile | 显示全部楼层
2736946915 发表于 2021-9-12 01:45
a[1]是2个,a[0]和a[1],是从0开始的

就是一个,不是两个。哈哈
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-13 21:21:58 | 显示全部楼层
2736946915 发表于 2021-9-13 21:01
建议你学好基础,西方国家是从0开始数的,0-9是10个,写循环只会写i

int a[2] 有几个元素?这里的2是指个数,代表的元素是a[0],a[1]。这里从0开始是为了指针计算的方便(就是方便计算偏移量),如:a[1]=*(a+1)这个恒等式就是体现了从0开始的方便性。你去看看教材是不是表示三个元素!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-13 21:27:42 | 显示全部楼层
2736946915 发表于 2021-9-13 21:01
建议你学好基础,西方国家是从0开始数的,0-9是10个,写循环只会写i

所以a[10],在循环赋值语句中会写成 i<10,这样就从a[0]到a[9]赋值,刚好10个数。方便!对吧&#128522;
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-13 21:54:21 | 显示全部楼层
2736946915 发表于 2021-9-13 21:29
好像是了..太久没玩这玩意了...
总的来说你这问题就是溢出,
[]这个东东别填就行,让编译器自己去算多 ...

长时间不接触有些语法会忘记的,我也是!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-29 09:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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