如何正确清除struct数组

时间:2013-12-02 09:45:16

标签: c arrays struct

我有一个问题here。现在我希望清除数组的每个元素而不使用'\ 0'技巧。我尝试使用memset,但它抱怨

 expected ‘void *’ but argument is of type ‘struct array’

这是我的代码:

    int i;  
for( i=0; i< sizeof(array)/sizeof(array[0]) ; i++){
    memset(array[i], 0, sizeof(array[i] ) );
}

如何正确清除它。感谢

2 个答案:

答案 0 :(得分:3)

memset需要一个指针(添加&):

memset(&array[i], 0, sizeof(array[i] ) );

但是如果要清除整个数组,可以将for - 循环替换为:

memset(array, 0, sizeof(array));

作为旁注:你应该真的避免sizeof(array)/sizeof(array[0])。定义元素计数的常量。当您开始将数组传递给函数时,它不易出错。

答案 1 :(得分:0)

由于你有一个静态数组,所以不需要for循环:

memset(array, 0, sizeof(array)); // sizeof gives proper size of entire array if array is static.