数组的初始化(初始化就是在定义时赋值):
1、满数初始化
int arr[5] = {1,2,3,4,5}; //arr[0]-->1 arr[4]-> 5
2、部分初始化
int arr[5] = {1,2,3}; //arr[0]=1, arr[1]=2,arr[2]=3,arr[3]=0,arr[4]=0
根据上面可得出:
想在初始化时让所有的元素的值都为0,int arr[5] = {0};
二维数组的初始化:
int a[2][3] = {{1,2,3}, {4,5,6}}; //满数初始化时,行号可以省略,但是列数不能省略
//因为列数代表类型,后面讲
int a[2][3] = {{1}, {4,5}};
int a[2][3] = {1,2,3,4,5,6};
数组的赋值:
int arr[5];
arr[5] = {1,2,3,4,5}; //error arr[i]这种写法是访问数组元素,并且arr[5]越界了
arr = {1,2,3,4,5}; //error arr是数组名,我们目的是给数组中的每一个元素赋值
所以:赋值时只能依次给每个元素赋值,使用for循环来实现
字符数组:元素类型为char类型数组
char str[5] = {'a','b','c','d','\0'};
char str[5] = "abcd";
char str[5] = "ab";
字符数组的赋值:
scanf("%s", 数组名);
printf("%s\n",数组名);
字符串的输入与输出函数:
字符串的输入函数:gets(数组名);
字符串的输出函数:puts(数组名);
注意:scanf和gets都可以给字符数组赋值,但是scanf以空格和回车作为结束标志
而gets只以回车作为结束标志
在使用gets时,因为gets不做越界检查,所以当输入字符串时,最多只能输入n-1个字符
scanf也一样
字符二维数组:
char str[2][20] = {"hello", "world"};