C/C++, STM32,KEIL warning: #175-D: subscript out of range

这个问题是我在学习stm32,使用c语言进行编程时遇到的,在此记录解决问题的方法,希望自己谨记的同时帮助大家,也希望能和大家一起打牢编程的基础知识。

我用一个简单地程序来解释这个问题。
问题:
调用数组的时候报错,数组下标超出范围
warning:subscript out of range

其实是你引用整个数组的问题,引用数组只用数组名就好了。

#include "iostream"
#include "stdio.h"
using namespace std;

#define DoNothing 1
///这是一个三维数组,一共有2*4*8=64个元素
const unsigned int Haus[2][8][4] =
{
128,0,255,127,128,1,255,63,
128,3,255,31,255,3,255,15,
193,3,255,7,193,31,255,3,
193,63,128,1,193,127,128,0,
0,0,127,0,0,0,127,0,
0,0,127,0,127,60,127,0,
127,60,127,0,127,0,127,0,
127,0,0,0,127,0,0,0
};

///为了解释问题,写一个测试函数,在主函数中调用
void testfunction(const unsigned int Array[2][8][4])
{for(i1=0;i1<2,i1++)
	{
	for(i2=0,i2<8,i2++)
		{
		for(i3=0;i3<2,i3++)
		{DoNothing;}
		}
	}
}
///在主函数调用测试的函数
int main()
{
	testfunction(Haus[2][8][4]);
	///testfunction(Haus);
}
//这样就会报错subscript out of range
//如果想整体调用这个三维数组,可以像注释那样子引用整个数组,只写数组名就可以了

其实这是一个很傻的错误,我这个函数想整体调用这个数组,那么只需要输入数组名作为函数参数就可以了,然而我却写了一个Haus[2][8][4],这个其实是超出范围的引用,很简单,但是在编程的时候,很容易头脑发热忽略掉。

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值