当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 17 篇帖子 ]  前往页数 1, 2  下一页
作者 内容
1 楼 
 文章标题 : 关于一段c++代码
帖子发表于 : 2009-09-05 13:43 
头像

注册: 2008-03-23 17:01
帖子: 3340
送出感谢: 0 次
接收感谢: 2
int *pi = new int( 10 );
int *pia = new int[ 10 ];
while ( *pi < 10 ) {
pia[ *pi ] = *pi;
*pi = *pi + 1;
}
delete pi;
delete [] pia;

看不出哪里有错,请大家指教
PS:新学程序语言不久,请大家见谅,呵呵


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 关于一段c++代码
帖子发表于 : 2009-09-05 13:58 
头像

注册: 2007-03-02 17:36
帖子: 7259
送出感谢: 3
接收感谢: 97
那他到底哪错了呢?编译错误还是执行出来的结果不对?报什么错啊?


_________________
虽然世上没有完美的东西,但这并不影响我们追求完美,因为只有偏执狂才TMD能成功。
10.04新手入门——笨兔兔讲述自己的故事


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 关于一段c++代码
帖子发表于 : 2009-09-05 14:13 
头像

注册: 2008-03-23 17:01
帖子: 3340
送出感谢: 0 次
接收感谢: 2
懒蜗牛Gentoo 写道:
那他到底哪错了呢?编译错误还是执行出来的结果不对?报什么错啊?

不是啦,是书上的一个练习题哦,题目这样“下面的代码段是做什么的,有什么严重错误?”。等等我编译看看。。。


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 关于一段c++代码
帖子发表于 : 2009-09-05 14:29 
头像

注册: 2008-03-23 17:01
帖子: 3340
送出感谢: 0 次
接收感谢: 2
哦,很奇怪啊,刚才编译的时候没有出现问题,也可以执行。。。
所以,更不知道这个问题是什么咯


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 关于一段c++代码
帖子发表于 : 2009-09-05 14:34 
头像

注册: 2008-07-23 19:06
帖子: 746
送出感谢: 0 次
接收感谢: 0 次
脑残题目。


_________________
G.S.Alex's Blog


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 关于一段c++代码
帖子发表于 : 2009-09-05 14:39 
头像

注册: 2008-03-23 17:01
帖子: 3340
送出感谢: 0 次
接收感谢: 2
soething 写道:
脑残题目。

。。。。。。。
我是新学程序语言不久,要是有人觉得我问的问题过于简单,可以不要来回答。谢谢


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 关于一段c++代码
帖子发表于 : 2009-09-05 15:02 
头像

注册: 2009-05-02 14:51
帖子: 190
送出感谢: 0 次
接收感谢: 0 次
根本就没进入循环 :em20


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 关于一段c++代码
帖子发表于 : 2009-09-05 15:19 
头像

注册: 2007-03-02 17:36
帖子: 7259
送出感谢: 3
接收感谢: 97
恩,对,根本没循环……
int *pi = new int( 10 );
这句之后,*pi就等于10了,从来也没小于过10啊


_________________
虽然世上没有完美的东西,但这并不影响我们追求完美,因为只有偏执狂才TMD能成功。
10.04新手入门——笨兔兔讲述自己的故事


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 关于一段c++代码
帖子发表于 : 2009-09-05 19:51 

注册: 2009-06-27 23:33
帖子: 37
送出感谢: 0 次
接收感谢: 0 次
*pi初始化成10,
*pi<10为假,循环都不用进,直接就开始两条delete语句。程序当然能通过编译而且很顺畅的执行。
估计题目本意是循环体里面的数组下标超界问题吧。
真不知道是那本书里的。


页首
 用户资料  
 
10 楼 
 文章标题 : Re: 关于一段c++代码
帖子发表于 : 2009-09-05 21:12 
头像

注册: 2008-03-23 17:01
帖子: 3340
送出感谢: 0 次
接收感谢: 2
月光林地的猫 写道:
*pi初始化成10,
*pi<10为假,循环都不用进,直接就开始两条delete语句。程序当然能通过编译而且很顺畅的执行。
估计题目本意是循环体里面的数组下标超界问题吧。
真不知道是那本书里的。

是的,我也知道没有进入循环的。是C++ Primer里面的练习题。
多谢指教


页首
 用户资料  
 
11 楼 
 文章标题 : Re: 关于一段c++代码
帖子发表于 : 2009-09-06 14:20 
头像

注册: 2008-11-05 14:59
帖子: 37
送出感谢: 0 次
接收感谢: 0 次
越界记大过!!!


_________________
....................................
善用联系的观点看问题,
这就是哲学
...................................


页首
 用户资料  
 
12 楼 
 文章标题 : Re: 关于一段c++代码
帖子发表于 : 2009-09-07 20:07 
头像

注册: 2008-03-23 17:01
帖子: 3340
送出感谢: 0 次
接收感谢: 2
xuyu16 写道:
越界记大过!!!

怎么越界呢?还请指点一二哦。。。


页首
 用户资料  
 
13 楼 
 文章标题 : Re: 关于一段c++代码
帖子发表于 : 2009-09-08 16:06 

注册: 2009-06-27 23:33
帖子: 37
送出感谢: 0 次
接收感谢: 0 次
pia指向一个10个元素的整形数组int[10]
pi被初始化为10
那么pia[*pa]就是pia[10],
10个元素的数组,下标是从0-9的,pia[10]当然越界了。
后面又把(*pi)++了,越界的更严重。
这个程序如果执行了循环体内的语句,轻则段错误,然后直接终止;严重的话,你得按机箱上某个大大的按钮了。


最后由 月光林地的猫 编辑于 2009-09-08 17:41,总共编辑了 3 次

页首
 用户资料  
 
14 楼 
 文章标题 : Re: 关于一段c++代码
帖子发表于 : 2009-09-08 17:18 
头像

注册: 2008-11-05 14:59
帖子: 37
送出感谢: 0 次
接收感谢: 0 次
这个题目的用意就是让你知道越界是不好的,但是有不能真的越界造成潜在的崩溃。于是,就不让进循环,只是让你看看,打预防针而已。 :em09


_________________
....................................
善用联系的观点看问题,
这就是哲学
...................................


页首
 用户资料  
 
15 楼 
 文章标题 : Re: 关于一段c++代码
帖子发表于 : 2009-09-08 18:18 
头像

注册: 2008-03-23 17:01
帖子: 3340
送出感谢: 0 次
接收感谢: 2
月光林地的猫 写道:
pia指向一个10个元素的整形数组int[10]
pi被初始化为10
那么pia[*pa]就是pia[10],
10个元素的数组,下标是从0-9的,pia[10]当然越界了。
后面又把(*pi)++了,越界的更严重。
这个程序如果执行了循环体内的语句,轻则段错误,然后直接终止;严重的话,你得按机箱上某个大大的按钮了。

哦,我明白了,所以题目才没有让进入循环,只是单纯为了表达越界的错误,对吗,呵呵
多谢咯


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 17 篇帖子 ]  前往页数 1, 2  下一页

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译