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,

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

原文链接: https://www.cnblogs.com/fanliyong007/p/8206624.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/267187

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月14日 下午6:22
下一篇 2023年2月14日 下午6:23

相关推荐