【发布时间】:2011-10-12 14:03:26
【问题描述】:
我现在正在研究memset函数,但是所有的例子都是关于char数组的,如下:
char a[100];
memset(a, 0, 100);
它会将这个 char 数组中的每个元素设置为 0。
我想知道memset是否可以应用于int数组或float数组?
【问题讨论】:
-
甚至,
memset可以应用于struct。任何记忆都可以,只要你有权写。 -
为什么不只是
char a[100] = {};? -
@Muggen:因为那不是有效的 C...(您需要在大括号内添加一个零才能使其有效。)
-
@Fecal - 它将指针设置为 0,这可能与 NULL 相同,但不能保证。
-
memset(a, 0, sizeof a)会将a的内容设置为全字节零。但除非a是某个整数类型的数组(注意:char 是整数类型),否则不能保证将值设置为零。 可能全字节零表示浮点类型的 0.0 或指针类型的空指针,但语言不保证这一点。要将对象初始化为全零,无论其类型如何,您都可以编写some_type a = { 0 };。 (一些编译器可能会警告缺少初始化程序,但未指定的元素将设置为零。)