一个简单问题,不理解

wylove 2004-11-02 01:28:34
这是C++ primer中的一个问题,本人刚学C++,实在不理解,希望各位大虾给予帮助!

下面的代码段是做什么的,有什么严重错误(注意指针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;
...全文
125 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wylove 2004-11-02
  • 打赏
  • 举报
回复
这是C++ primer中的问题,我自己看不出有什么错误!谢谢各位了!
dragonzxh 2004-11-02
  • 打赏
  • 举报
回复
如果按照*pi=10,Pia[10]哪来啊,没有的啊
zxl_llx 2004-11-02
  • 打赏
  • 举报
回复

我的解释
int *pi = new int( 10 );//<-----------为pi开辟空间,并负值10,即*pi=10;
int *pia = new int[ 10 ];//<-----------pia开辟空间
while ( *pi < 10 ) {//<------------派断是否*pi<10
pia[ *pi ] = *pi;//<--------------负值
*pi = *pi + 1;//<--------------自增;
}
delete pi;
delete [] pia;//<----------------删除指针

其实,while没循环,把int *pi = new int( 10 );改成int *pi = new int( 0 );好点
dragonzxh 2004-11-02
  • 打赏
  • 举报
回复
程序改为这样

int *pi = new int( 10 );
int *pia = new int[ 10 ];
while ( *pi >= 10&&*pi<=20 )
{
pia[ *pi-10 ] = *pi;
*pi = *pi + 1;
}
delete pi;
delete [] pia;
dragonzxh 2004-11-02
  • 打赏
  • 举报
回复
再者,pia[]没new 那么多啊
imRainman 2004-11-02
  • 打赏
  • 举报
回复
*pi的初值一开始就为10了,见:int *pi = new int(10) ;

那么while还没循环就退出了~
dragonzxh 2004-11-02
  • 打赏
  • 举报
回复
没啥严重的,呵呵,首先就是循环条件永远为假,呵呵
sutra 2004-11-02
  • 打赏
  • 举报
回复
int *pi = new int( 10 );//申请一个int,初使化为10
int *pia = new int[ 10 ];//申请10个int
while ( *pi < 10 ) {//当先申请的那个int值小于10时循环
pia[ *pi ] = *pi;//以先申请的那个int的值为下标,对指定int数组元素赋值。
*pi = *pi + 1;//先申请的数自增1。
}
delete pi;
delete [] pia;

小弟无能,实在没看出哪不对。当然,要严格地讲,new可以返回NULL,因此应该检查new的返回值。
另外,在这里,首次循环条件就是FALSE,好像不大合理。
内容概要:本文研究了基于二阶线性自抗扰控制器(LADRC)的表贴式永磁同步电机(PMSM)双闭环矢量调速系统,重点在于通过Simulink搭建仿真模型,实现对PMSM的速度和电流双环控制。文中系统阐述了LADRC的核心原理及其在估计并补偿系统内部动态与外部扰动方面的优越性,相较于传统PI控制,LADRC显著提升了系统的动态响应速度、抗干扰能力和鲁棒性。研究构建了完整的矢量控制体系,涵盖了Park与Clarke坐标变换、空间矢量脉宽调制(SVPWM)技术、转速环与电流环的协同设计,并通过大量仿真实验,全面验证了所提出控制策略在启动过程、突加/突卸负载以及电机参数摄动等多种工况下的卓越性能表现。; 适合人群:自动化、电气工程、控制科学与工程及相关专业的研究生、高校科研人员及从事高性能电机驱动与控制算法开发的工程师。; 使用场景及目标:①深入理解自抗扰控制(ADRC)理论在高精度电机驱动系统中的具体应用与实现方法;②掌握基于Simulink/MATLAB的PMSM矢量控制系统从理论建模到仿真实现的全流程技术;③学习并掌握LADRC控制器的参数整定规律与优化技巧,提升解决实际工程中强扰动、非线性问题的能力;④为研发具有更高鲁棒性和控制精度的工业级电机控制系统提供先进的技术方案与理论依据。; 阅读建议:建议读者结合所提供的Simulink仿真模型进行同步学习与实践,重点关注扩张状态观测器(ESO)的带宽配置、控制器参数与系统性能之间的内在关系,并可通过修改负载条件和电机参数来测试系统的鲁棒性,为进一步研究非线性ADRC或将其应用于其他复杂机电系统奠定坚实基础。

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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