memset() 初始数组时最好用于这三种情况:
- )memset(a,0,sizeof(a)); // a 为一个 int 类型数组名, 全部初始为 0
- )memset(a,-1,sizeof(a)); // 全部初始为 - 1
- )memset(a,0x3f,sizeof(a)); // 初始为一个很大的值 0x3f3f3f3f
若初始为其他值会有问题
- #include <iostream>
- #include <cstring>
- using namespace std;
- int main()
- {
- int a[5][5];
- memset(a,1,sizeof(a));
- for(size_t i=0;i<5;++i){
- for(size_t j=0;j<5;++j){
- cout<<a[i][j]<<' ';
- }
- cout<<endl;
- }
- return 0;
- }
- View Code
- memset(a,1,sizeof(a));
出现结果:(其他非 0,-1 的赋值结果也是一些很大的数)
网上找到的较容易理解的说法:
因为 memset 只能逐个字节赋值, 而 int 数组要求每 4 字节赋值. 所以 memset 慎用, 非以上 3 种情况时就用 for 循环吧~
来源: http://www.bubuko.com/infodetail-2957955.html