C语言中的memset函数
我现在正在研究 memset 函数,但所有示例都与 char 数组有关,如下所示:
char a[100];
memset(a, 0, 100);
它将将此 char 数组中的每个元素设置为 0。
我想知道 memset 是否可以应用于 int 数组或 float 数组?
I am studying the memset function now, but all the examples are regarding to char array as following:
char a[100];
memset(a, 0, 100);
it will set every element in this char array to 0.
I wondered if memset can apply to int array or float array?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
是的,它可以应用于任何内存缓冲区,但您必须输入正确的内存缓冲区大小...
memset
将任何内存缓冲区视为一系列字节,因此无论是char
>、int
、float
、double
等并不重要。但请记住,它不会将多字节类型设置为特定的非零值...例如:不会将
a
的每个成员设置为该值1 ...相反,它将把a
占用的内存缓冲区中的每个字节设置为1
,这意味着每四个字节int
将被设置为该值0x01010101
,与0x00000001
不同Yes, it can apply to any memory buffer, but you must input the correct memory buffer size ...
memset
treats any memory buffer as a series of bytes, so whether it'schar
,int
,float
,double
, etc, doesn't really matter. Keep in mind though that it will not set multi-byte types to a specific non-zero value ... for example:will not set each member of
a
to the value 1 ... rather it will set every byte in the memory buffer taken up bya
to1
, which means every four-byteint
will be set to the value0x01010101
, which is not the same as0x00000001
对于静态大小和可变长度数组,您可以
经验法则:切勿对[数据大小]进行硬编码。
(如果将数组作为函数参数传递,则这不起作用:C 中 Sizeof 的行为 )
For static-sized and variable-length arrays, you can just
Rule of thumb: Never hardcode [data sizes].
(This does not work if you pass arrays as function arguments: Behaviour of Sizeof in C )
它可以应用于任何数组。最后的 100 是以字节为单位的大小,因此每个整数将是 4 个字节,所以它会是 -
明白了吗? :)
It can be applied to any array. The 100 at the end is the size in bytes, so a integer would be 4 bytes each, so it would be -
Get it? :)