数组
-
定义
数组就是具有一定顺序关系的若干变量的集合,其中每个变量都是数组的元素
特点:
1、数据类型相同
2、地址连续
存储类型 数据类型 数组名
存储类型:auto register static extern 若省略相当于auto
数据类型:数组中每一个元素的数据类型
数组的数据类型:数据类型 [元素个数]
数据类型:去掉变量名就是数据类型
数组名:代表的是整个数组以及首个元素的地址
元素的个数必须是一个常数,不可以是变量,但是可以用符号常数或者常量表达式,如a[3+2]
2.初始化
2.1局部初始化
对于普通局部数据,若定义时没有初始化,则数组中元素的值时不确定的。
2.2static数组不初始化
Static修饰的数组定义时没有初始化,则数组中的元素的值默认为0
2.3全部初始化
int a[5] = {1,2,3,4,5};
int a[ ] = {1,2,3};//数组元素的个数由后面赋值的具体个数来决定
int a = 5;//初始化
2.4总结
如果数组定义在函数体内部,没有初始化,其值不确定
如果数组定义在函数体外部,没有初始化,其值默认为0
Static修饰的数组,没有初始化,其值为0
3.数组的访问
数组名[下标]
下标从0开始,若数组在定义时指定有n个元素,则数组的下标范围为0~(n-1)
字符数组
字符数组的本质:字符串,以’\0’作为结束符
存储类型 数据类型 数组名[元素的个数];
char str[6] = {‘h’,’e’,’l’,’l’,’o’,’\0’};
char str[6] = “hello”;
char str[6] = {“hello”};
字符数组清零:char str[6] = {‘\0’};
注意:在输入的时候,一定要留一个位置用来保存’\0’
字符串的输出函数
puts(数组名);
函数功能:将字符串输出到屏幕上,自动添加\n并
注意:遇到’\0’输出结束
字符串的输入函数
gets(数组名);
功能:从键盘上获取字符串保存到数组中
注意:(1)自动在末尾添加’\0’ (2)不会进行越界检查
字符串处理函数
strlen、strcpy、strcat、strcmp
头文件:#include <string.h>
1、strlen
strlen(数组名);
功能:求字符串的长度
返回值:返回求到的字符串的实际长度,不包含’\0’
sizeof和strlen的区别:
- sizeof是运算符,而strlen是函数
- Sizeof求的是整个空间的大小,strlen求的是字符串的实际长度,包含\0
2、strcpy
strcpy(数组1,数组2);
功能:将数组2中的字符串拷贝到数组1中,包含’\0’,相当于完全拷贝
注意:数组1的容量要大于数组2
数组2也可以是字符串
strncpy(数组1,数组2,n);
功能:将数组2中的前n个字符拷贝到数组1中
注意:拷贝的内容不包含‘\0’