为什么memset函数初始int类型数组只能初始化为-1或者0
memset函数的声明和含义如下:
函数解释:将s所指向的某一块内存中的前n个字节的内容全部设置为 ch 指定的 ASCII值, 第一个值为指定的内存地址,块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向s的指针。该函数对int数组而言只能用于int数组的置0或-1,其他值无效。其作用是在一段内存块中填充某个给定的值,它是对较大的结构体或者数组进行清零操作的一种最快方法。函数声明如下:
void * memset(void *s, int ch, size_t n);
因此如果我们想将数组置为我们要的十进制值,只能置为0或-1,因为0的二进制表示全为0,-1的二进制表示全为1,按字节为单位完成赋值的结果可以保持不变。
ps:若数组类型为字符,我们可以将其初始化为任意字符
本文详细解析了memset函数的工作原理及其为何只能将int数组初始化为0或-1的原因。介绍了memset函数的使用方法及限制条件,并说明了对于不同数据类型的初始化区别。
2348

被折叠的 条评论
为什么被折叠?



