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