memset()函数及其作用
我曾天真的以为 memset(a,0,sizeof(a))中的0可以用任意数替换 但是~ 实际上这是错误的 memset的功能 : 是将一快内存中的内容以 单个字节 逐个拷贝的方式放到指定的内存中去. 对于这一点我们拿memset(a, -1, sizeof a), 和memset(a, 1, sizeof a) (a为int类型)两个表达式进行举例. 先看memset(a, -1, sizeof a): 1个int是四个字节: -1 的补码是 11111111 11111111 11111111 11111111 (int) memset中的-1之占据一个字节 11111111 () memset()函数每次拷贝 拷贝一个字节,即: 11111111, 由于int中-1的四个字节都是相同的,所以最终结果能正确的输出-1; 表达式换成memset(a, 1, sizeof a)的话, 1 的源码和补码相同都是 00000000 00000000 00000000 00000001(int) memset中的1占据一个字节 00000001 memset()执行过后,每次拷贝一个字节,即 00000001 ,一个int就是4个字节合并到一起 就是 00000001 00000001 00000001 00000001 进行输出的话就是 16843009 所以这段代码执行过后会输出