memset()对va_list的含义是什么?

时间:2017-01-11 09:25:47

标签: c memset variadic-functions

我阅读了以下代码片段:

va_list args;
memset(&args, 0, sizeof(va_list));

va_start(args, xxx);
...
va_end(args);

memset()va_start()之前直接有什么含义?

如果移除memset()行,有什么区别?

2 个答案:

答案 0 :(得分:6)

这意味着编写本文的程序员不知道他们在做什么,并喜欢浪费代码。

他们可能会盲目地遵循某些静态分析工具的指令,即变量必须在使用之前进行初始化。

va_start(args, xxx);执行所有必要的初始化,并覆盖memset刚刚放入的所有0值,使memset的工作毫无价值。

答案 1 :(得分:-1)

memset按字节顺序设置内存。它并不关心参数的类型是什么,事实上,它需要一个void指针。

它会在count之后将dest个内存位置设置为字符ch

void* memset( void* dest, int ch, size_t count )