关于一段c++代码
- 懒蜗牛Gentoo
- 论坛版主
- 帖子: 7353
- 注册时间: 2007-03-02 17:36
- 系统: Linux Mint
Re: 关于一段c++代码
那他到底哪错了呢?编译错误还是执行出来的结果不对?报什么错啊?
虽然世上没有完美的东西,但这并不影响我们追求完美,因为只有偏执狂才TMD能成功。
10.04新手入门——笨兔兔讲述自己的故事
10.04新手入门——笨兔兔讲述自己的故事
- banban
- 帖子: 3340
- 注册时间: 2008-03-23 17:01
Re: 关于一段c++代码
不是啦,是书上的一个练习题哦,题目这样“下面的代码段是做什么的,有什么严重错误?”。等等我编译看看。。。懒蜗牛Gentoo 写了:那他到底哪错了呢?编译错误还是执行出来的结果不对?报什么错啊?
- banban
- 帖子: 3340
- 注册时间: 2008-03-23 17:01
Re: 关于一段c++代码
哦,很奇怪啊,刚才编译的时候没有出现问题,也可以执行。。。
所以,更不知道这个问题是什么咯
所以,更不知道这个问题是什么咯
- soething
- 帖子: 746
- 注册时间: 2008-07-23 19:06
- banban
- 帖子: 3340
- 注册时间: 2008-03-23 17:01
Re: 关于一段c++代码
。。。。。。。soething 写了:脑残题目。
我是新学程序语言不久,要是有人觉得我问的问题过于简单,可以不要来回答。谢谢
- comfanter
- 帖子: 190
- 注册时间: 2009-05-02 14:51
Re: 关于一段c++代码
根本就没进入循环
- 懒蜗牛Gentoo
- 论坛版主
- 帖子: 7353
- 注册时间: 2007-03-02 17:36
- 系统: Linux Mint
Re: 关于一段c++代码
恩,对,根本没循环……
int *pi = new int( 10 );
这句之后,*pi就等于10了,从来也没小于过10啊
int *pi = new int( 10 );
这句之后,*pi就等于10了,从来也没小于过10啊
虽然世上没有完美的东西,但这并不影响我们追求完美,因为只有偏执狂才TMD能成功。
10.04新手入门——笨兔兔讲述自己的故事
10.04新手入门——笨兔兔讲述自己的故事
-
- 帖子: 37
- 注册时间: 2009-06-27 23:33
Re: 关于一段c++代码
*pi初始化成10,
*pi<10为假,循环都不用进,直接就开始两条delete语句。程序当然能通过编译而且很顺畅的执行。
估计题目本意是循环体里面的数组下标超界问题吧。
真不知道是那本书里的。
*pi<10为假,循环都不用进,直接就开始两条delete语句。程序当然能通过编译而且很顺畅的执行。
估计题目本意是循环体里面的数组下标超界问题吧。
真不知道是那本书里的。
- banban
- 帖子: 3340
- 注册时间: 2008-03-23 17:01
Re: 关于一段c++代码
是的,我也知道没有进入循环的。是C++ Primer里面的练习题。月光林地的猫 写了:*pi初始化成10,
*pi<10为假,循环都不用进,直接就开始两条delete语句。程序当然能通过编译而且很顺畅的执行。
估计题目本意是循环体里面的数组下标超界问题吧。
真不知道是那本书里的。
多谢指教
- xuyu16
- 帖子: 37
- 注册时间: 2008-11-05 14:59
Re: 关于一段c++代码
越界记大过!!!
....................................
善用联系的观点看问题,
这就是哲学的美。
...................................
善用联系的观点看问题,
这就是哲学的美。
...................................
- banban
- 帖子: 3340
- 注册时间: 2008-03-23 17:01
Re: 关于一段c++代码
怎么越界呢?还请指点一二哦。。。xuyu16 写了:越界记大过!!!
-
- 帖子: 37
- 注册时间: 2009-06-27 23:33
Re: 关于一段c++代码
pia指向一个10个元素的整形数组int[10]
pi被初始化为10
那么pia[*pa]就是pia[10],
10个元素的数组,下标是从0-9的,pia[10]当然越界了。
后面又把(*pi)++了,越界的更严重。
这个程序如果执行了循环体内的语句,轻则段错误,然后直接终止;严重的话,你得按机箱上某个大大的按钮了。
pi被初始化为10
那么pia[*pa]就是pia[10],
10个元素的数组,下标是从0-9的,pia[10]当然越界了。
后面又把(*pi)++了,越界的更严重。
这个程序如果执行了循环体内的语句,轻则段错误,然后直接终止;严重的话,你得按机箱上某个大大的按钮了。
上次由 月光林地的猫 在 2009-09-08 17:41,总共编辑 3 次。
- xuyu16
- 帖子: 37
- 注册时间: 2008-11-05 14:59
Re: 关于一段c++代码
这个题目的用意就是让你知道越界是不好的,但是有不能真的越界造成潜在的崩溃。于是,就不让进循环,只是让你看看,打预防针而已。
....................................
善用联系的观点看问题,
这就是哲学的美。
...................................
善用联系的观点看问题,
这就是哲学的美。
...................................
- banban
- 帖子: 3340
- 注册时间: 2008-03-23 17:01
Re: 关于一段c++代码
哦,我明白了,所以题目才没有让进入循环,只是单纯为了表达越界的错误,对吗,呵呵月光林地的猫 写了:pia指向一个10个元素的整形数组int[10]
pi被初始化为10
那么pia[*pa]就是pia[10],
10个元素的数组,下标是从0-9的,pia[10]当然越界了。
后面又把(*pi)++了,越界的更严重。
这个程序如果执行了循环体内的语句,轻则段错误,然后直接终止;严重的话,你得按机箱上某个大大的按钮了。
多谢咯