防止越界访问数组

简介: 防止越界访问数组

示例代码:

#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++不会使数组越界。

相关文章
|
5月前
|
索引
访问数组元素
【2月更文挑战第2天】访问数组元素。
33 3
|
5月前
|
存储 C语言 索引
数组元素的删除
数组元素的删除
|
11月前
|
编译器
数组的下标法和指针法查找数组中元素的不同
总结文档的时候遇到了这个问题。在CSDN上看到一篇博客觉得有缺漏和误导性,所以自己总结一下。
59 0
|
5月前
|
存储 Java 索引
Java数组的地址值与元素访问技术
Java数组的地址值与元素访问技术
55 2
|
5月前
|
存储 安全 Java
防止数组元素的指针被修改
防止数组元素的指针被修改
45 1
|
5月前
|
存储 算法 C语言
引用二维数组的元素
引用二维数组的元素
50 1
|
5月前
|
存储 Java C++
如何引用二维数组的元素
在编程中,二维数组是一个非常重要的数据结构,它允许我们在一个单一的变量中存储多个值的集合。二维数组可以看作是数组的数组,即每个元素都是一个数组。这种结构特别适用于存储表格数据,如矩阵、棋盘布局等。
96 0
|
5月前
|
BI
多维数组元素的指针访问方式
以二维数组为例介绍多维数组的指针访问方式。
49 0
指针-实现数组循环移动
指针-实现数组循环移动
102 0
|
Java 索引 容器
【JavaSE专栏28】数组下标能越界?越界了如何处理?
【JavaSE专栏28】数组下标能越界?越界了如何处理?
456 0