公众号算法集市中学习内容:
memset函数按字节对内存块进行初始化,所以不能用它将int数组初始化为0和-1之外的其他值。
memset -1值
#include<iostream>
using namespace std;
int main(){
int arr[3];
memset(arr,-1,sizeof(int)*3);
for (int i = 0; i < 3; i++)
printf("arr[%d]:%d\n",i,arr[i]);
getchar();
return 0;
}
//输出:arr[0]:-1 arr[1]:-1 arr[2]:-1
memset 0值
#include<iostream>
using namespace std;
int main(){
int arr[3];
memset(arr,0,sizeof(int)*3);
for (int i = 0; i < 3; i++)
printf("arr[%d]:%d\n",i,arr[i]);
getchar();
return 0;
}
//输出:arr[0]:0 arr[1]:0 arr[2]:0
memset 1值
#include<iostream>
using namespace std;
int main(){
int arr[3];
memset(arr,1,sizeof(int)*3);
for (int i = 0; i < 3; i++)
printf("arr[%d]:%d\n",i,arr[i]);
getchar();
return 0;
}
//输出:arr[0]:16843009 arr[1]:16843009 arr[2]:16843009
因为memset是对每个字节进行赋值的,已知一个int为4字节,那么memset赋值为二进制则为:00000001 00000001 00000001 00000001=16843009。