c/c++中对于memset的个人理解

Posted fanliyong007

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c/c++中对于memset的个人理解相关的知识,希望对你有一定的参考价值。

今天在写一道dfs题目,想到要给一个二维数组初始化合适的函数且学过的就memset了,这个函数很神奇memset函数是逐字节进行填充并且它是一个字符串函数,看到网上一个代码没看懂如下

#define MAX 100000
const int MAXN = 5; 
int len[MAXN][MAXN]; 
memset(len,MAX,sizeof(len));//失败,并不能让len数组所有的值是100000,而是-1600085856
memset(len,-1,sizeof(len))//成功,并且len所有的值都是-1;
memset(len,-2,sizeof(len))//失败 

又继续搜索发现memset函数是逐字节进行填充,所以a一般为char *型。对于其它类型的a,可以填充的值有两个,0和-1。因为计算机中用二进制补码表示数字,0和二进制补码为全0,-1的二进制补码为全1,

第一个和第三个失败的原因就是如此。最后要注意该函数在头文件<string.h>中

 

以上是关于c/c++中对于memset的个人理解的主要内容,如果未能解决你的问题,请参考以下文章

memset()函数

零基础学C语言内存知识总结:memset函数和calloc函数

memset 与 memcpy

关于CSS的个人理解

[linux][c/c++]代码片段01

[linux][c/c++]代码片段02