gpt4 book ai didi

c++ - 在 memset 为默认值后验证数组的更改

转载 作者:行者123 更新时间:2023-11-30 17:45:11 25 4
gpt4 key购买 nike

我有以下代码,其中:(1)使用默认值初始化数组; (2) 对数组做一些事情; (3)检查数组是否仍然是默认的。我不确定 (3)。

#include <stdlib.h>
#include <stdio.h>
#include <inttypes.h>
#include <string.h>

#define ARRAY_MAX 10
#define DEFAULT_VALUE 0

int main(int argc, char *argv[])
{
uint32_t array[ARRAYMAX];

memset(array, DEFAULT_VALUE, sizeof(array));
do_something_with(array);
check_array_is_default(array);
return 0;
}

我检查数组是否仅为默认值的方法如下(即,这就是我编写 check_array_is_default() 函数的方式):

int check_array_is_default(uint32_t *array)
{
int i;
uint32_t defval = DEFAULT_VALUE;

for (i = 0; i < ARRAY_MAX; i++)
{
if (memcmp((array + i * sizeof(uint32_t)), &defval, sizeof(uint32_t)))
{
return 0;
}
}
return 1;
}

最佳答案

memset 填充字节,而不是单词,因此您需要单独查看字节:

int check_array_is_default(uint32_t *array)
{
char *p = (char *)array;
int n = ARRAY_MAX * sizeof(array[0]);
for (int i = 0; i < n; i++) {
if(p[i] != DEFAULT_VALUE) {
return 0;
}
}
return 1;
}

关于c++ - 在 memset 为默认值后验证数组的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19711975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com