0 问题引入
将一个n*m的二维数组 a 初始化为 0 ;
朴素的代码:
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
a[i][j]=0;
}
}
C++给了一个memset()函数,可以大幅降低代码量:
memset(a,0,sizeof(a));
以上两段代码实现的结果,都是满足题意的,但是同学们希望能用memset实现更多的功能,尝试能否解决:
1 慎用memset():
- 如上面的例题,需要对(整数)数组进行初始化,最简单的方法是直接枚举修改,在特殊情况下,可以使用memset()函数来替代。
- 特殊情况:99%的时候是指初始化为 0 和 -1 ,其他情况需要慎重使用。
2 二进制存储原理分析:
- 整数的二进制存储情况:每8位一个字节,一个整数是32位,所以一个整数有4个字节;
a=0 的时候,二进制表现如下:
a=8 的时候,二进制表现如下: