今天在写一道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>中
原文地址:https://www.cnblogs.com/fanliyong007/p/8206624.html
时间: 2024-10-06 20:57:36