防止越界访问数组

简介: 防止越界访问数组

2000元阿里云代金券免费领取,2核4G云服务器仅664元/3年,新老用户都有优惠,立即抢购>>>


阿里云采购季(云主机223元/3年)活动入口:请点击进入>>>,


阿里云学生服务器(9.5元/月)购买入口:请点击进入>>>,

示例代码:

#include <stdio.h>

char Buff[12];

/* 获取数组大小 */
#define  GET_BUFF_SIZE(Arry)    (sizeof((Arry)) / sizeof(Arry[0]))
/* X自加时访问Arry数组,防止数组越界访问 */
#define  INC_BUFF_NUM(Arry, X)  {(X)++; (X) = (X) % GET_BUFF_SIZE((Arry));}

int main(void)
{
    char i = 0;
    char n = 0;

    while(1)
    {
        Buff[i] = n;
        printf("Buff[%d] = %d\n", i, Buff[i]);
        INC_BUFF_NUM(Buff, i);

        n++;
        if(n == 20)
            break;
    }

    return 0;
}

运行结果

Buff[0] = 0
Buff[1] = 1
Buff[2] = 2
Buff[3] = 3
Buff[4] = 4
Buff[5] = 5
Buff[6] = 6
Buff[7] = 7
Buff[8] = 8
Buff[9] = 9
Buff[10] = 10
Buff[11] = 11
Buff[0] = 12
Buff[1] = 13
Buff[2] = 14
Buff[3] = 15
Buff[4] = 16
Buff[5] = 17
Buff[6] = 18
Buff[7] = 19

通过打印可以看出 “i = i % BUFF_MAX;” 把数组的最大值限制在BUFF_MAX-1下,i++不会使数组越界。

相关文章
|
4天前
|
C语言 C++
数组元素的指针
数组元素的指针
11 0
|
4天前
|
索引
访问数组元素
【2月更文挑战第2天】访问数组元素。
18 3
|
6月前
|
编译器
数组的下标法和指针法查找数组中元素的不同
总结文档的时候遇到了这个问题。在CSDN上看到一篇博客觉得有缺漏和误导性,所以自己总结一下。
43 0
|
4天前
|
存储 安全 Java
防止数组元素的指针被修改
防止数组元素的指针被修改
15 1
|
4天前
|
BI
多维数组元素的指针访问方式
以二维数组为例介绍多维数组的指针访问方式。
29 0
|
10月前
指针-实现数组循环移动
指针-实现数组循环移动
|
10月前
|
Java 索引 容器
【JavaSE专栏28】数组下标能越界?越界了如何处理?
【JavaSE专栏28】数组下标能越界?越界了如何处理?
323 0
二维数组的初始化,下标,遍历,及数组间的赋值
下标: 行下标与列下标都是从0开始。 例如:int a[3][2] = { { 1,2 } , { 3,4 } , { 5,6 } }; 行下标:0 1 2 列下标:0 1 元素表现为: a [0][0] a [0][1] a [1][0] a [1][1] a [2][0] a [2][1] 另一个角度:
217 0
写一个函数打印数组arr数组的内容,不使用数组下标,使用指针 arr是一个整型一维数组
写一个函数打印数组arr数组的内容,不使用数组下标,使用指针 arr是一个整型一维数组
91 0
写一个函数打印数组arr数组的内容,不使用数组下标,使用指针 arr是一个整型一维数组
|
C++
C++实现有界数组模板(检查数组是否越界)
C++实现有界数组模板(检查数组是否越界)
132 0
C++实现有界数组模板(检查数组是否越界)
http://www.vxiaotou.com