C语言中数组超出范围,检测数组下标边界是否超出范围解决方案
C/C++ codetemplate class Array;
template
class ArrayBody
{
friend class Array;
T* tpBody;
int iRows,iColumns,iCurrentRow;
ArrayBody(int iRsz, int iCsz)
{
tpBody= new T[iRsz*iCsz];
iRows= iRsz; iColumns = iCsz; iCurrentRow = -1;
}
public:
T& operator[](int j)
{
bool row_error,column_error;
row_error=column_error=false;
try
{
if(iCurrentRow <0 || iCurrentRow >= iRows)
row_error = true;
if(j<0 || j >= iColumns)
column_error=false;
if(row_error== true || column_error == true)
throw ‘e’;
}
catch(char)
{
if (row_error == true)
cerr<
if(column_error== true)
cerr<
cout<
}
return tpBody[iCurrentRow*iColumns+j];
}
~ArrayBody(){delete[] tpBody;}
};
template class Array
{
ArrayBody tBody;
public:
ArrayBody & operator [](int i)
{
tBody.iCurrentRow= i;
return tBody;
}
Array(int iRsz, int iCsz):tBody(iRsz,iCsz){}
};
void main()
{
Array a1(10,20);
Array a2(3,5);
int b1;
double b2;
b1 = a1[-5][10];
b1 = a1[10][15];
b1 = a1[1][4];
b2 = a2[2][6];
b2 = a2[10][20];
b2 = a2[1][4];
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/180570.html原文链接:https://javaforall.cn
相关文章
- c语言里void什么作用,C语言中void是什么意思?
- C语言数组当参数传递
- C语言 数组初始化的三种常用方法({0}, memset, for循环赋值)以及原理「建议收藏」
- C语言数组练习题目
- c语言如何遍历数组,C语言数组遍历
- c语言中指针赋值问题,关于C语言指针赋值的问题「建议收藏」
- c语言 数组存放规则,C语言数组详解
- C语言:定义一个指针字符串,统计英文字母、空格、数字和其他字符的个数,要求使用函数完成。
- C语言条件运算符_c语言数组长度可变吗
- C语言中EOF是什么意思?
- C语言strcpy(),memcpy(),memmove() | 数组赋值给数组
- 【嵌入式开发】C语言 内存分配 地址 指针 数组 参数 实例解析
- C语言被指针手撕
- 【初级】C语言——数组
- 掌握C语言操作MySQL数据库技能(c操作mysql数据库)
- 函数指针及其定义和用法,C语言函数指针详解
- 宏定义(无参宏定义和带参宏定义),C语言宏定义详解
- 初始化数组,C语言中数组的初始化
- C语言数组指针和指针数组
- C语言一维数组的定义
- C语言格式化输入
- Linux下编辑C语言实战指南(linux怎么编辑c语言)
- 编程简单Linux C语言串口编程实践(linuxc串口)
- Linux下C语言开发实践(linuxc语言应用)
- C语言如何使用Mysql的基本类型(c 使用mysql的类型)
- C语言操作Oracle数据库的游标实现(c 执行oracle游标)
- C语言与Oracle编程合理应用编码工具(c oracle 编码)
- C语言Oracle数据库抛出异常处理(c oracle异常)
- C语言中全局数组和局部数组的问题
- linux下C语言中的mkdir函数与rmdir函数
- C语言安全编码数组记法的一致性
- C语言实现在数组A上有序合并数组B的方法