c语言的memset函数

16 c arrays memset

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

char a[100];
memset(a, 0, 100);
Run Code Online (Sandbox Code Playgroud)

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

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

Jas*_*son 44

是的,它可以适用于任何内存缓冲区,但你必须输入正确的内存缓冲区大小...... memset对待任何内存缓冲区的字节序列,所以无论是char,int,float,double,等,其实并不重要.请记住,它不会将多字节类型设置为特定的非零值...例如:

int a[100];
memset(a, 1, sizeof(a));
Run Code Online (Sandbox Code Playgroud)

设置的各构件a为值1 ...而是将设置的每一个字节中由所占据的存储器缓冲器a1,这意味着每四个字节int将被设置为的值0x01010101,这是不一样的0x00000001

  • 关于**多字节类型的非常有用的注释**! (3认同)