我有一个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/

10-10 23:39