我有一个名为quint8 block[16]的数组,我:
使用block[16] = { 0 }初始化为零
用一些数据填充它
然后将其作为参数传递给方法/函数,如下所示bool fill(const quint8 *data)
在这个fill函数中,我想看看数组是否完全填充,或者它是否包含未填充的空元素。
这样检查对吗?if(!data[i])?我在这个论坛上看到过类似的问答,但都是使用\0NULL的,我听说这样做不是一个好的方式,这让我很困惑。

最佳答案

整数类型在C++中没有“空”的概念。
两种可能的想法是:
1)使用特定整数值表示“未设置”。如果0对数据有效,则显然不能用于此。也许一些其他的值会起作用,比如类型的最大值(在这种情况下它看起来是0xFF)。但是,如果所有可能的值都对您的数据有效,那么这个想法就行不通了。
2)使用其他数据跟踪已设置的值。一种方法是一个bools数组,每个bools对应一个数据元素。另一种方法是简单地计算有多少元素被设置为一个值(显然,这只在数据按顺序填充而没有任何间隙时有效)。

09-10 09:49
查看更多