对函数memset和运算符sizeof的理解
sizeof可以作用于很多情况 sizeof() 或者 sizeof
- 作用于类型 – 当作用于类型时,必须要括号
sizeof(int) -- 4
- 作用域变量
不能用于函数类型,不完全类型或位字段。不完全类型指具有未知存储大小的数据类型,如未知存储大小的数组类型、未知内容的结构或联合类型、void类型等
sizeof(int) = 4;
sizeof(unsigned int) = 4;
sizeof(short int) = 2;
sizeof(unsigned short) = 2;
sizeof(long int) = 4;
sizeof(unsigned long) = 4;
sizeof(float) = 4;
sizeof(double) = 8;
sizeof(long double) = 12;
- 作用于数组名 – 返回数组的总字节数
void memset(void s, int v, size_t n);
memset函数是对一片连续内存按字节单独分配
s – 可以是数组名,或者是指向某个地址的指针
v – 要填充的值
n – 要填充的字节数
一般使用memset对数组初始化时
memset(1,1,sizeof(a));
并不会得的我们想得到的给数组中每个数初始化为1
1的二进制数为 00000001 一个int类型为4个字节
所以数组中每个元素将会被赋值为00000001 00000001 00000001 00000001 = 16843009(十进制)
所以我们一般是用
memset(a,0,sizeof(a));
memset(a,-1,sizeof(a));