我有一个问题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] ) );
}
如何正确清除它。感谢
答案 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.