本文主要是介绍memset函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
让我们先看两个代码
memset(dp, 0x3f, sizeof(dp));
for (int i = 0; i < 5; i++)cout << dp[i] << " ";
memset(dp, 127, sizeof(dp));
for (int i = 0; i < 5; i++)cout << dp[i] << " ";
代码结果如下:
现在我们来分析一下原因:
因为memset是以字节为单位赋值的
什么意思呢
首先,一个int占四个字节,每个字节8位
memset(dp, 1, sizeof(dp));
这段代码的意思是用1来填充每个字节,填充完后每个dp[i]的结果如下
0 0 0 0 0 0 0 1 | 0 0 0 0 0 0 0 1 | 0 0 0 0 0 0 0 1 | 0 0 0 0 0 0 0 1 |
这实际上是2^24+2^16+2^8+2^0 = 16843009
同理127的二进制为
1 1 1 1 1 1 1 1 |
因此用memset初始化为
1 1 1 1 1 1 1 1 | 1 1 1 1 1 1 1 1 | 1 1 1 1 1 1 1 1 | 1 1 1 1 1 1 1 1 |
注意memset的两个特殊初始化,一个初始化为0,还有个为-1;
memset(dp, 0, sizeof(dp));
memset(dp, -1, sizeof(dp));
这篇关于memset函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!