memsetting初始化缓冲区的原因是什么

im *_*sed 2 c initialization memset

在浏览维基百科之后,我偶然发现了以下代码示例,该示例将char缓冲区初始化为0,但memset在使用之前将其初始化为0.这有必要吗?如果是这样,为什么?我问的原因是我不是专家,并且这个例子清楚地表明这是编码器的意图,其中注释" /* Really initialized to zeroes */" 与初始化上的memset" /* initialized to zeroes */" 相反.

编辑:注意,我已经在维基百科页面上回滚了导致这种情况的编辑,因此它在链接中不再可见.

oua*_*uah 10

char buffer[5] = {0};  /* initialized to zeroes */

/* some declaration / statements, but no access to buffer object */

memset ( buffer, 0, sizeof buffer); /* Really initialized to zeroes */
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,调用memset完全没用.buffer已经保证初始化为0.

  • 我没有看到用`{0}`初始化和用`char`数组初始化'memset()`之间有什么区别,但是对于其他类型,在奇异系统上可以有一个0.0没有用所有位零表示,通过在指针上下文中写'0`得到的空指针没有用所有位零表示,... (2认同)
  • 如果我没有弄错的话,C11也保证填充是零填充的. (2认同)