单片机C语言中如何做一个函数判断一个数组的大小?

uint16_tArray_Size(constuint8_t*array_pt){constuint8_t*pt;uint16_tsize;for(pt=array_p... uint16_t Array_Size(const uint8_t * array_pt)
{
const uint8_t * pt;
uint16_t size;
for(pt = array_pt; *pt != NULL; pt++)
{
size++;
}
return size;
}
可string.h里面NULL被宏定义为0,这样的话显然无法正确判断数组大小,因为数组成员里出现0的可能是很大的,请问怎么改?
展开
 我来答
风若远去何人留
推荐于2017-10-04 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450129
专业C/C++软件开发

向TA提问 私信TA
展开全部
可以在函数中借用sizeof运算符,来获取数组大小。

1 获取数组a整体占用空间可以使用
sizeof(a)
该值为这个数组占用的总内存值,单位为字节。

2 获取数组元素个数可以用
sizeof(a)/sizeof(a[0])
该值为数组开辟的元素个数。
ATF144X
2014-04-09 · TA获得超过1.2万个赞
知道大有可为答主
回答量:5344
采纳率:77%
帮助的人:4652万
展开全部
本来就是这样啊,如果你的是字符串,比如“hello,world!”,是以0x00(就是NULL或者'/0')结尾的,所以能判断出长度。但是对于非字符串的数组,就必须你自己限定长度而不能用检查0x00来确定长度了。否则就是说的那种情况。
更多追问追答
追问
您好!您的意思是不是像如下这种数组就无法判断通过写函数判断数组长度了?
例:
const uint8_t ON_STATE[] = {
0xF8,0x04,0x02,0x01,0x01,0x01,0xF1,0xF9,0x09,0x09,0xF9,0xF1,0x01,0x01,0xF9,0xF9,
};
您好!您的意思是不是像如下这种数组就无法判断通过写函数判断数组长度了?
例:
const uint8_t ON_STATE[] = {
0xF8,0x04,0x02,0x01,0x01,0x01,0xF1,0xF9,0x09,0x09,0xF9,0xF1,0x01,0x01,0xF9,0xF9,
};
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-04-09
展开全部
不会 这个啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
清风403
2014-04-09 · TA获得超过1189个赞
知道小有建树答主
回答量:1263
采纳率:100%
帮助的人:708万
展开全部
*pt != '/0'
更多追问追答
追问
您好!我的数组成员都是数字的,不是字符串型的,这样的话您说的方法恐怕不行吧?
追答
那你检测空格行不行呢,既然是数字,中间应该不会出现空格的

*pt != ' ';双引号中间是一个空格
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式