C中的memset函数初始化所有数组

Memset function in C initialised all the arrays

我试图初始化一个由指针组成的数组:

我使用的代码是:

    int c = 15;
    Struct *Pointer[c] = {NULL};
    memset( pointer, 0, c *sizeof(pointer) );

它起作用了,但是这个 memset() 函数不仅初始化了我的指针数组,还初始化了我所有其他数组...

有什么办法可以解决吗?

我不能使用 for(){} 或 while 函数,因为它会增加我的时间复杂度...

干杯'

sizeof(pointer)是整个数组的大小pointer。将大于 1 的整数乘以 memset() 的大小将导致超出范围的访问。

删除有害乘法。

int c = 15;
Struct *Pointer[c] /* = {NULL} */; /* VLA cannot be initialized */

/* some other code that uses Pointer */

memset(Pointer, 0, sizeof(Pointer));
memset(Pointer, 0, sizeof(Pointer));

memset(Pointer, 0, c * sizeof(*Pointer));

找出不同。

如果您付出一些研究并打印出 sizeof(Pointer) 并计算 c * sizeof(Pointer) 错误的原因,您就可以自己回答您的问题。