注册 登录
编程论坛 C++教室

有什么错误

flyingzc 发布于 2010-04-13 17:13, 859 次点击
程序代码:
int *pi = new int( 10 );
int *pia = new int[ 10 ];
while ( *pi < 10 )
{
    pia[ *pi ] = *pi;
    *pi = *pi + 1;
}
delete pi;
delete [] pia;
上面的代码段是做什么的,有什么严重错误
这是C++ primer的一道习题,这会有什么错误呢
11 回复
#2
cnfarer2010-04-13 18:19
这个while的循环体有执行的可能性吗?
#3
flyingzc2010-04-13 18:59
没可能,但有什么错误呢
#4
cnfarer2010-04-13 19:57
回复 3楼 flyingzc
错误可以分两种:一种是语法错误;另一种是逻辑错误。
#5
南国利剑2010-04-13 20:19
回复 4楼 cnfarer
求教:
似乎就是循环体没有执行,应该没有什么致命的错误吧。编译器应该不会报错啊???
#6
debroa7232010-04-13 21:01
你编译报错了吗?你用的是什么编译器?
如果报错,猜想是int *pi = new int( 10 );
这句报错了。
#7
乡下人0小程2010-04-13 21:43
不会
#8
南国利剑2010-04-14 12:39
没有问题啊,不过你得写完整了,就像下面的(我试过的,没有问题,能够通过编译,并运行,就是没有执行循环体而已)。
代码如下:
#include <iostream>
using namespace std;

int main()
{
    int *pi = new int( 10 );
    int *pia = new int[ 10 ];
    while ( *pi < 10 )
        {
            pia[ *pi ] = *pi;
            *pi = *pi + 1;
        }
    delete pi;
    delete [] pia;
    return 1;
}
#9
yyblackyy2010-04-14 14:34
不知道楼主的是什么牌的编译器啊~~
#10
jimbray2010-04-14 16:48
应该没什么错吧,先做个记号,等高人作答
#11
号角2010-04-15 08:19
应该是没有付初值吧,*p内为随机值
#12
debroa7232010-04-15 20:54
以下是引用号角在2010-4-15 08:19:27的发言:

应该是没有付初值吧,*p内为随机值
int *pi = new int( 10 );
这句就赋了初值了。
1