总结

全局变量数组未初始化,则其默认值全为0.

局部变量数组未初始化,则其默认值随机,需要手动清零。

数组初始化为空最简单。

PS:关于所用函数的解析

一、全局变量数组

1 #include

2 int a[100];

3 int main()

4 {

5 printf("%d ", a[0]);

6 //0

7 return 0;

8 }

自动为0,所以直接使用就ok。

二、局部变量数组

1.垃圾值

1 #include

2 int main()

3 {

4 int a[100];

5 printf("%d ", a[0]);

6 //-858993460

7 return 0;

8 }

2.最简单:初始化为空

简单到哭了QAQ

int a[5] = {};

字符数组都行:

1 char buff[1000] = {};

2 char buff[1000] = "";

3.memset()

(1)头文件

C:#include

C++:#include or #include

(2)函数原型

void *memset(void *s,int c,size_t n)

作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。

参数:s代表数组名,c代表要设置的值,n代表内存空间。

注意:第三个参数表示内存空间,而不是元素个数,内存空间=元素个数*每个元素所占空间。

1 int a[5];

2 memset(a,0,sizeof(a));

3 for(int i=0;i<5;i++)

4 cout<

5 //0 0 0 0 0

(3)局限

一般来说用0或-1初始化,别的值会发生意想不到的错误

1 int a[5];

2 memset(a,1,sizeof(a));

3 for(int i=0;i<5;i++)

4 cout<

5 //16843009 16843009 16843009 16843009 16843009

6 第二个参数c的值的范围是0x00-0xff

意义:如memset(s,1,n),c就是0x01,c是int型,四个字节(0x01010101),转化成十进制就是1643009

1 int a[5];

2 cout<<0x02<<' '<<0x02020202<

3 memset(a,2,sizeof(a));

4 for(int i=0;i<5;i++)

5 cout<

6 //33686018 33686018 33686018 33686018 33686018

7 int a[5];

8 memset(a,0xff,sizeof(a));

9 for(int i=0;i<5;i++)

10 cout<

11 //-1 -1 -1 -1 -1

12 //0xffffffff就是-1

4.fill()

(1)头文件

1 #include

2 using namespace std;

(2)例子

1 int a[10];

2 fill(a,a+10,0);