鱼C论坛

 找回密码
 立即注册
查看: 1655|回复: 4

教材上的代码敲进去运行错误,不知道有什么问题

[复制链接]
发表于 2016-2-25 15:33:47 | 显示全部楼层
错误代码:{temp=name[j];name[j]=name[k];name[k]=temp;}
崩溃原因:name[j]=name[k]; 这一句name[j]正好指向了了调用者的堆栈空间,name[k]的值 直接赋值给main的返回值。  mainret = main(int, int, int);   name[j] 此时就指向 mainret 调用者的堆栈空间。
而你name虽然是局部堆栈空间,但你存放的是一个指针数组,每一个元素都是指向常量空间。你的main返回值赋给一个常量空间,系统自然会抛一个0xc0000005 访问异常的错误。
错误分析:name[j]  j 的结果受第二个for循环控制。而你赋值的地方,已经超过for的边界。再离开第二个FOR之前程序还会做一次自加操作。所以下面会越界。既然你说是抄的,那应该是你将i错抄成j了。
个人建议:以后抄代码,把该加的括号加上。那样也不会再犯类似的错误了。
解决方案:name[j] 改成 name[i]
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-5 06:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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