繁体   English   中英

c语言的memset函数

[英]memset function in c language

我现在正在研究memset函数,但所有示例都与char数组有关,如下所示:

char a[100];
memset(a, 0, 100);

它会将此char数组中的每个元素设置为0。

我想知道memset是否可以应用于int数组或float数组?

是的,它可以应用于任何内存缓冲区,但是你必须输入正确的内存缓冲区大小... memset将任何内存缓冲区视为一系列字节,因此无论是charintfloatdouble等,都不是真的物。 请记住,它不会将多字节类型设置为特定的非零值...例如:

int a[100];
memset(a, 1, sizeof(a));

不会的每个成员设置a为值1 ...而是将设置在由所占据的存储缓冲器的每一个字节 a1 ,这意味着每四个字节int将被设置为值0x01010101 ,这是不与0x00000001相同

它可以应用于任何阵列。 最后的100是以字节为单位的大小,因此每个整数将是4个字节,因此它将是 -

int a[100];
memset(a, 0, sizeof(a)); //sizeof(a) equals 400 bytes in this instance

得到它? :)

对于静态大小和可变长度的数组,您可以

<arbitrary-type>  foo [...];
memset (foo, 0, sizeof (foo)); // sizeof() gives size of entity in bytes


经验法则:永远不要硬编码[数据大小]。

(如果将数组作为函数参数传递,则不起作用: C中Sizeof的行为

暂无
暂无

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

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