数组越界检查

qepyxyx065 2004-10-21 01:37:33
自己写了个简单的数组越界检查,请各位帮忙看看
#include <iostream.h>
class array
{
private:
int *date,size,max;
public:
array(int n=10)
{
date=new int[n];
max=n;
size=0;
}
~array()
{
delete[]date;
}
int check(int num)
{
if(num>max)
{cout<<"数组越界!!!请检查";
return 0;
}
return 1;
}
int array_input(int j)
{
cin>>date[j];
return 1;
}
};
void main()
{
int i;
array myarraycheck_test;
for(i=0;i<10;i++)
{
if(myarraycheck_test.check(10)==1)
{
myarraycheck_test.array_input(i);
}
else
break;
}
}
大家给我点意见,或者源码谢谢
...全文
243 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
qepyxyx065 2004-10-21
  • 打赏
  • 举报
回复
^_^,初学c++类自然写的很不好了,谢谢指教
myarraycheck_test.check(10)==1这里我是为了验证类才这么写的
return 0正确,出错return 1
学到了很多东西,谢谢大家
Dong 2004-10-21
  • 打赏
  • 举报
回复
myarraycheck_test.check(10)==1//这句话从你程序来说是没有意义的,反而带来容易出错的一面

int array_input(int j)
{
cin>>date[j];
return 1;
}
其实你在这里更应该检查有没有越界

类写得很“生”,没有价值,好好学习!
还有返回值的问题很不好,不是bool的问题,编程中的习惯你必须好好的应用,这样的代码才有价值,正确的最好返回0


恩。一句话,类太原始了!
qepyxyx065 2004-10-21
  • 打赏
  • 举报
回复
顶一下,征求更多意见
qepyxyx065 2004-10-21
  • 打赏
  • 举报
回复
多谢各位,这段代码我是没有考虑特殊情况,兄弟我马上改进,请大家还有什么意见赶快告诉我,谢谢
geesun 2004-10-21
  • 打赏
  • 举报
回复
#include <iostream.h>
class array
{
private:
int *date,size,max;
public:
array(int n=10)
{
date=new int[n];
max=n;
size=0;
}
~array()
{
delete[]date;
}
//int check(int num)
bool check(int num)
{
//if(num>max)
if(num>=max)
{cout<<"Êý×éÔ½½ç!!!Çë¼ì²é";
//return 0;
return false;
}
//return 1;
return true;
}
int array_input(int j)
{
cin>>date[j];
size ++;
return 1;
}
};
void main()
{
int i;
array myarraycheck_test;
for(i=0;i<10;i++)
{
//if(myarraycheck_test.check(10)==1)
if(myarraycheck_test.check(i))
{
myarraycheck_test.array_input(i);
}
else
break;
}
}
greenteanet 2004-10-21
  • 打赏
  • 举报
回复
int check(int num)
{
if(num>max)//应该是num>=max
{cout<<"数组越界!!!请检查";
return 0;
}
return 1;
}
freshairfly 2004-10-21
  • 打赏
  • 举报
回复
嘿嘿,可以参考Effective C++ 条款18
daylove 2004-10-21
  • 打赏
  • 举报
回复
好象是没有考虑特别的情况,比如说=,0
freshairfly 2004-10-21
  • 打赏
  • 举报
回复
不知道你要实现到什么程度
不过你的程序好像有点问题:
int check(int num)
{
if(num>max)// 应该为if(num >= max)吧
{cout<<"数组越界!!!请检查";
return 0;
}
return 1;
}

另外如果你想写一个功能比较全的Array类,至少你还需要考虑以下问题:
1、提供[]操作符,并在里面进行越界检查
2、重载=操作符,并提供拷贝构造函数,并做相应的检查
3、提供函数返回当前类的容量和实际长度
4、使用泛型实现,可以适用于多种数据类型
gogowhy 2004-10-21
  • 打赏
  • 举报
回复
if(myarraycheck_test.check(10)==1)//这里总是真吧?

改为:if(myarraycheck_test.check(i)==1) ??

lynnboy 2004-10-21
  • 打赏
  • 举报
回复
没什么用啊,而且应该用num>=max吧
carylin 2004-10-21
  • 打赏
  • 举报
回复
如果这样定义:
array myarraycheck_test(0);
怎么办?你没有考虑这种情况
carylin 2004-10-21
  • 打赏
  • 举报
回复
int check(int num)
{
if(num>max)
{cout<<"数组越界!!!请检查";
return 0;
}
return 1;
}
建议将返回值改为bool型,这是编程风格。

64,648

社区成员

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

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