应该在memset之前对结构进行类型转换

时间:2016-07-25 21:28:28

标签: c++ pointers struct memset

为什么我要在memset函数中对一个结构进行类型转换。我看到很多代码如下所示:

memset( (char*) &mFdr, 0, sizeof(FdrData) );

FdrData是一个struct,memset采用void指针。根据我的理解,我认为void指针应该采用任何类型的指针,并查看每个字节到你想要的任何内容。我知道0被转换为unsigned char。但我不明白类型转换为memset()的结构的重要性。

1 个答案:

答案 0 :(得分:0)

你不应该做你的例子中的内容。就像你说的那样,(char*)没有任何意义。

memset(来自使用c ++的c程序员)的许多历史用法都不需要(从不需要)。例如,您可以使用{} ...

初始化结构
struct Thing {
    int x, y, z;
};

Thing t{}; // x = 0, y = 0, x = 0;
Thing t2; // x, y, and z could be anything

我想不到上次我在结构上使用memset。