---数组
--一维数组
-数组的定义
例:int arr[ ] = {1,2,3,4,5,6,7,8,9,10};
(定义了一个可以储存10个元素的整型数组,数组名为arr)
注意:数组名arr除了表示该数组之外,还表示该数组的首地址
-一维数组的初始化
定义数组时给所有元素赋初值,叫做 “ 完全初始化 ”。 例如;
int a[5] = {1,2,3,4,5};
通过将数组元素的初值依次放在一对花括号中,如此初始化之后,a[0]=1;a[1]=2;a[2]=3;a[3]=4;a[4]=5,即从左到右依次赋给每个元素。需要注意的是,初始化时各元素间是用逗号隔开,不是用分号
可以值给一部分元素赋值,这叫“不完全初始化”,例如;
int a[5] = {1,2};
定义的数组 a 有 5 个元素,但花括号内只提供两个初值,这表示只给前面两个元素 a[0]、a[1] 初始化,而后面三个元素都没有被初始化。不完全初始化时,没有被初始化的元素自动为 0。也不能写成“int a[5]={};”。如果大括号中什么都不写,那就是极其严重的语法错误。大括号中最少要写一个数。比如“int a[5]={0};”,这时就是给数组“清零”,此时数组中每个元素都是零。此外,如果定义的数组的长度比花括号中所提供的初值的个数少,也是语法错误,如“a[2]={1,2,3,4,5};”。
-字符数组和字符串
字符数组:有一个一个的字符组成的数组
例:char arr1[5] = {'h','e'}; char arr2[8] = {'a',98};
字符串:由双引号引起来的一串字符称为字符串字面值,简称字符串
示例代码:
输出结果:
sizeof和strlen的区别:
1、sizeof会将空字符\0计算在内,而strlen不会将空字符\0计算在内;
2、sizeof会计算到字符串最后一个空字符\0并结束,而strlen如果遇到第一个空字符\0的话就会停止并计算遇到的第一个空字符\0前面的长度。
-字符串的输入
格式:scanf("%s",字符数组的首地址);
功能:用户从键盘输入任意一段字符串,存放到buf中。以回车,空格,tab键盘作为用户输入的结束符号。
--二维数组
-二维数组的创建
例:int arr[3][4];
char arr[3][5];
double arr[2][4];
-二维数组的初始化
例:1int arr[3][4]={1,2,3,4};
2int arr[3][5]={{1,2},{4,5}};
3int arr[][4]={{2,3},{1,2}};
(定义二维数组时,行数可以省略,系统会根据初始化元素的个数或行数来分配对应的内存空间)
(注意:数组在内存中是连续储存)
示例代码:
输出结果: