繁体   English   中英

Memset function 在 C 初始化所有 arrays

[英]Memset function in C initialised all the arrays

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

我使用的代码是:

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

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

有什么办法可以解决吗?

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

干杯'

sizeof(pointer)是整个数组pointer的大小。 将大于 1 的整数乘以 size 到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)错误的原因,您可以自己回答您的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM