1.一维数组的定义
int a[10]表示一次性定义10个整形变量。
例子:输出a[10]中的元素
数组是拿已有的数据类型创建的新类型。
注意:1.数组可以由任意数据类型创建,但不能是void型;
2.数组名命名规则遵循标识符命名规则;
3.方括号中的长度>=1,可以是常量和符号常量,不能是变量。
2.数组的三大特性
1.单一性:数组中每个元素有独自的存储空间;
2.有序性:下标小的元素地址靠前;
3.连续性:每个元素存储空间之间没有间隔。
3.一维数组的引用
注意:数组不能整体引用,如
int a[10];
a = 10;
是错误的,因为1.a时数组型,10是整形不匹配;2.数组有多个元素,10不知道赋给哪一个;
3.数组的数组名为数组的首元素地址,即
a等价于&a[0]
printf("%p",a)打印的是地址
因此,当数组长度过长时,可以这样输出:
4.去掉变量名,剩下类型名
int a[10]去掉a,剩下的int[10](长度为10的int型)为类型名,但和int不是一个类型!
5.int a[10]的“[]”不是下标运算符,是用来说明类型。
4.一维数组初始化
{}的元素个数<=[]的元素个数
5.越界访问
如 inta[10];
a[10] = 1;会将元素a[10]存在数组a[10]存储空间之后,占用分配给其他数据的存储空间,造成严重的程序错误。
a[-1]则在数组存储空间之前存储,方括号内为偏移量,正向后负向前,数的大小为从首地址向前(后)访问到此数的长度。
6.排序
1.倒叙
中间划分,前后交换
2.选择排序
在合适的位置上放上合适的数
算法复杂度n^2
外层for限制次数,内层选出最小的数放数列左边
3.冒泡排序
数组中相邻的两个元素两两比较,小的放前,大的放后
算法复杂度n^2
外层限制次数,内层选出最大的数放右边
4.插入法排序
算法复杂度n^2
第3个元素插入与前2个比,排序;第4个元素插入与前3个比,排序...
排序的目的是为了查找,在前提是有序数列时,可以通关二分查找法提升效率。