我有一个2D数组,它充当消息队列,每个消息都包含为char[]
#define BUFFER_LENGTH 64
#define QUEUE_LENGTH 100
char MessageQueue[QUEUE_LENGTH][BUFFER_LENGTH];
我只想检查数组是否为第一维的特定值为空
for(int i = 0; i < sizeof(MessageQueue); i++)
{
if(MessageQueue[i] == 0)
MessageQueue[i][j] = ....;
}
但是,如果为空,则不会输入
if
语句。 最佳答案
数组的第一维被第二维占据,因此它不能等于0。第二维可能包含垃圾,因为它尚未初始化。
如果要确保数组为空,请首先对其进行初始化:
for (int i = 0; i < QUEUE_LENGTH; i++)
for (int j = 0; j < BUFFER_LENGTH; j++)
MessageQueue[i][j] = 0;
然后使用一个辅助函数:
bool isEmpty(char * arr)
{
bool toReturn = true;
for (int i = 0; i < BUFFER_LENGTH && toReturn; i++)
toReturn = toReturn && 0 == arr[i];
return toReturn;
}
用法示例:
for (int i = 0; i < QUEUE_LENGTH; i++)
{
if (isEmpty(MessageQueue[i]))
{
// ....
}
}
关于c++ - 检查整个数组是否为空,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22135318/