C语言中的memset函数

发布于 2024-11-25 23:42:50 字数 185 浏览 2 评论 0原文

我现在正在研究 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

故事还在继续 2024-12-02 23:42:51

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

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

不会将 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's char, 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:

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

will not set each member of a to the value 1 ... rather it will set every byte in the memory buffer taken up by a to 1, which means every four-byte int will be set to the value 0x01010101, which is not the same as 0x00000001

各自安好 2024-12-02 23:42:51

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

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

经验法则:切勿对[数据大小]进行硬编码。

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

For static-sized and variable-length arrays, you can just

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

Rule of thumb: Never hardcode [data sizes].

(This does not work if you pass arrays as function arguments: Behaviour of Sizeof in C )

娇柔作态 2024-12-02 23:42:51

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

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

明白了吗? :)

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 -

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

Get it? :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文