[英]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.