关于指针的讨论?

terry_guo 2003-11-07 06:24:01
看看下面的程序有什么严重的错误????在一般程序中如何避免

int *pi = new int(0);
int *pia = new int[ 10 ];

while ( *pi < 10 ) {
pia[ *pi ] = *pi;


cout << &pi << "---"<< pi << "---"<< *pi <<endl;
cout << &pia + *pi << "---"<<pia[ *pi ] << "---"<< pia[ *pi ] <<endl;

*pi = *pi + 1;
}
cout << i;
delete pi;
delete [] pia;
return 0;
...全文
66 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
WYC2300 2003-11-09
  • 打赏
  • 举报
回复
没错啊要间接
jakeye 2003-11-09
  • 打赏
  • 举报
回复
同意楼上

格式太乱了。请以后注意写的标准一点。
ZhouHM 2003-11-09
  • 打赏
  • 举报
回复
同意楼上
Alaex 2003-11-09
  • 打赏
  • 举报
回复
cout << i; ???? i在哪里定义的??
cout << &pia + *pi ????这种代码有何意义??

除此之外代码没什么错误,也不存在内存泄露问题.
alenwelkin 2003-11-09
  • 打赏
  • 举报
回复
说个题外话

我个人认为能不用指针的地方尽量不用指针。

能将指针应用得灵活自如顾然是好,但一味的将代码复杂化不仅不利于阅读维护更加降低开发效率
playboyxp 2003-11-09
  • 打赏
  • 举报
回复
严重错误没有
使用这么多的指针看了有点不大舒服
GameWeaver 2003-11-09
  • 打赏
  • 举报
回复
同意Alaex() 的看法
David2008 2003-11-09
  • 打赏
  • 举报
回复
#include "iostream.h"
int main()
{ int *pi = new int(0);
int *pia = new int[ 10 ];
while ( *pi < 10 ) {
pia[ *pi ] = *pi;
cout << &pi << "---"<< pi << "---"<< *pi <<endl;
cout << &pia + *pi << "---"<<pia[ *pi ] << "---"<< pia[ *pi ]<<endl;
*pi = *pi + 1;
}
cout<<pi;
delete pi;
delete [] pia;
return 0;
}
David2008 2003-11-09
  • 打赏
  • 举报
回复
除了以上各位所说
如果这个是个完整的程序的话

那么:
//////////////////////////////////////////
;//世界上最短程序
//////////////////////////////////////////
leyt 2003-11-09
  • 打赏
  • 举报
回复
简单问题复杂化
terry_guo 2003-11-07
  • 打赏
  • 举报
回复
希望大家讨论一下关于指针使用的问题.最好附有程序例子(你在实际工作中的挫折,就是他人以后工作的经验)谢谢高手们参与
短歌如风 2003-11-07
  • 打赏
  • 举报
回复
&pia + *pi是没有问题的。这是一个“指针加整数”的操作。
它是计算&pia的地址的数值加上*pi *sizeof(int*)。当然这个地址并不是一个受控的数据的位置,但只要不对计算结果做*或->等操作就没有问题。
当然,如果作者是想输出pia[*pi]的地址,应该用pia+*pi,但这与代码要实现的逻辑有关。再没有看到要求时,不能说哪个就是错误的。
短歌如风 2003-11-07
  • 打赏
  • 举报
回复
除了代码格式不好外看不出有什么问题
bing_huo 2003-11-07
  • 打赏
  • 举报
回复
&pia + *pi ????

69,382

社区成员

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

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