这段代码错在哪里?

hslyliu 2003-05-26 02:47:30
int *pi = new int( 10 );
int *pia = new int[ 10 ];
while ( *pi < 10 ) {
pia[ *pi ] = *pi;
*pi = *pi + 1;
}
delete pi;
delete [] pia;
...全文
93 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
trackant 2003-05-26
  • 打赏
  • 举报
回复
改成int *pi = new int( 0 );后好像就没问题了呀。
arfi 2003-05-26
  • 打赏
  • 举报
回复
int *pi = new int( 10 ); 将pi申请一个大小为sizeof(int)的内存,并赋值为10。
int *pia = new int[ 10 ]; 申请一块内存,大小为10*sizeof(int),即一个整行数组,pia指向此内存区(如果按数组来说指向第一个元素,下标为0),并未赋初值。
trackant 2003-05-26
  • 打赏
  • 举报
回复
我说也是这个问题,不明白楼主要干什么
int *pi = new int( 10 );
...
while ( *pi < 10 ){}
这是什么意思?
根本不会运行{}里的内容。
point_to 2003-05-26
  • 打赏
  • 举报
回复
哦哦哦,刚才看错了,把*pi = *pi + 1;看成了pi = pi + 1;
不要被误导了啊!sorry!
98440622 2003-05-26
  • 打赏
  • 举报
回复
int *pi = new int(0); 就可以进入循环了!!

你的条件*pi < 10 如果初始就是10,则根本循环不了!
point_to 2003-05-26
  • 打赏
  • 举报
回复
这段没什么不对啊!
只是要注意:
while ( *pi < 10 ) {
pia[ *pi ] = *pi;
*pi = *pi + 1;
}
delete pi;
循环条件没有满足,所以*pi = *pi + 1;没有执行,否则下面的delete就有问题了!
可以

int *pi = new int( 10 );
int *p0=pi;
int *pia = new int[ 10 ];
while ( *pi < 10 ) {
pia[ *pi ] = *pi;
*pi = *pi + 1;
}
delete p0;
delete [] pia;
hslyliu 2003-05-26
  • 打赏
  • 举报
回复
int *pi = new int( 1 );这个地方可能是印刷上的错误,因为10的话会挂掉.
不过题目意思是错误在哪里,靠,我看不出来啊
point_to 2003-05-26
  • 打赏
  • 举报
回复
这段没什么不对啊!
只是要注意:
while ( *pi < 10 ) {
pia[ *pi ] = *pi;
*pi = *pi + 1;
}
delete pi;
循环条件没有满足,所以*pi = *pi + 1;没有执行,否则下面的delete就有问题了!
可以

int *pi = new int( 10 );
int *p0=pi;
int *pia = new int[ 10 ];
while ( *pi < 10 ) {
pia[ *pi ] = *pi;
*pi = *pi + 1;
}
delete p0;
delete [] pia;
flab_lwq 2003-05-26
  • 打赏
  • 举报
回复
改改就容易懂了,*pi是一个指向int类型的指针,*pia是指向int数组的指针。
#include <iostream.h>
void main()
{
int *pi = new int( 1 );
int *pia = new int[ 10 ];
while ( *pi < 10 ) {
pia[ *pi ] = *pi;
cout << pia[*pi] << endl;
*pi = *pi + 1;
}
delete pi;
delete [] pia;
}
hslyliu 2003-05-26
  • 打赏
  • 举报
回复
是C++Primer上的,我也不明白
int *pi = new int( 10 );???? 就是初始值


练习2.4
下面的代码段是做什么的有什么严重错误注意指针pia的下标操作符的用法是正
确的在3.9.2 节中我们会解释其理由
int *pi = new int( 10 );
int *pia = new int[ 10 ];
while ( *pi < 10 ) {
pia[ *pi ] = *pi;
*pi = *pi + 1;
}
delete pi;
delete [] pia;
oldcold 2003-05-26
  • 打赏
  • 举报
回复
int *pi = new int( 10 );????
trackant 2003-05-26
  • 打赏
  • 举报
回复
看不太懂...
int *pi = new int( 10 );
...
while ( *pi < 10 ){}
这是什么意思?
titainium 2003-05-26
  • 打赏
  • 举报
回复
*pia,这个是表示什么的?

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧