如果我定义的数组是用 code 关键字定义的:
code unsigned int arr[]={1,2,3,4};
为什么这样的数组使用sizeof(arr) 检测长度的时候返回是0 ?用keil c51编译器编译的时候警告,实际运行也是返回0。
是否不可以检测常量数组的长度?
code 关键字是 单片机编程将常量数组储存到ROM空间的关键字。
是单片机编程,但是我的表格很大,并且这样自己数出来长度的话程序不够通用。
追答如果你的数据值不是很大,可以像我这样定义试试
code unsigned int arr[]={1,2,3,4,9999};
检测长度的函数
int len(unsigned int* arr)
{
int len = 0;
while(1)
{
if(arr[len++] == 9999) break;
}
return len-1;
}
主要的我映像中单片机 c里没有提供 获取数组长度的函数,只好自己定义了,你可以试试这中方法
也可以再找找相关资料
我找到一点资料,有种方法你可以试试看行不行: (sizeof(arr) / sizeof(arr[0]) 获取长度
在vc上是可以的,不知道keil c51成不成
我实际上试过,没有用 code关键字定义的数组是没有警告的,返回也正确。