教材上的代码敲进去运行错误,不知道有什么问题
本帖最后由 阿飞。 于 2016-2-24 14:57 编辑字符串由小到大顺序输出,用指针数组作形参,不知道有什么问题,请大家帮忙看看 有什么错误呢?
void print(char *name[],int n);
void sort(char *name,int n);
开头加上这些。如果还有的话,把运行信息发出来,要不然别人怎么知道出了什么错误 最好把代码以代码的格式贴出来吧,这样我们也好复制代码然后在debug,你不能让我们把你图片中的代码敲一遍吧。。。 错误代码:{temp=name;name=name;name=temp;}
崩溃原因:name=name; 这一句name正好指向了了调用者的堆栈空间,name的值 直接赋值给main的返回值。mainret = main(int, int, int); name 此时就指向 mainret 调用者的堆栈空间。
而你name虽然是局部堆栈空间,但你存放的是一个指针数组,每一个元素都是指向常量空间。你的main返回值赋给一个常量空间,系统自然会抛一个0xc0000005 访问异常的错误。
错误分析:namej 的结果受第二个for循环控制。而你赋值的地方,已经超过for的边界。再离开第二个FOR之前程序还会做一次自加操作。所以下面会越界。既然你说是抄的,那应该是你将i错抄成j了。
个人建议:以后抄代码,把该加的括号加上。那样也不会再犯类似的错误了。
解决方案:name 改成 name 半斤八兩 发表于 2016-2-25 15:33
错误代码:{temp=name;name=name;name=temp;}
崩溃原因:name=name; 这一句name正好 ...
@半斤八两 果然是我抄错了,不知道自己眼睛怎么长的,核对了好几遍都没看出来,谢谢!
页:
[1]