一、数组是?
一组具有相同数据类型的数据的有序集合
一维数组
字符数组
二维数组
...
1、一维数组
(1) 定义一维数组的语法:
类型说明符 数组名[整数];//整数 可以是常量;值为整数的表达式 ; 可以为变量
类型说明符:
不是值数组的类型,而是数组里面的元素(数据)的类型,而是数组里面的元素
任意合法的C语言数据类型都可以
数组名:
数组的名字,符合C语言标识符规定,别和关键字一样
[整数]:
可以是常量;值为整数的表达式 ; 可以为变量
代表是数组的元素个数,一旦我们把数组定义好之后,该数组中元素的个数就不能变
例子:
int a[10];
定义了一个 数组,数组名字叫 a ,数组元素有 10 个,元素的类型为 int
float b[5];
定义了一个 数组,数组名字叫 b ,数组元素有 5 个,元素的类型为 float
....
a是什么类型数组类型
typeof(a) ---> int [10]
b是什么类型数组类型
typeof(b) ---> float [5]
(2)一维数组在内存中存放的顺序存储
一维数组中的各个元素在内存是连续的存储的
int a[10];
操作系统会给数组分配空间 10 * 4 = 40 字节(10个元素,每个元素都是 int),这40个字节是连续的
并且是从 低地址(小的编号 内存) 到 高地址(编号大的内存) 依次存放第1个 到 第 10 个元素
(3) 怎么用 / 访问一维数组中的元素
下标法:
数组名[下标]--> 代表的是数组中的那个元素
下标:
整数,范围[0,N) N 代表的是 元素总个数
[0,N-1]
int s[10];
定义了一个 数组,数组名字叫 s ,数组元素有 10 个,元素的类型为 int
s[0]:数组中第1个元素
s[1]:数组中第2个元素
.....
s[9]:数组中第10个元素
s[10]:10超过范围 叫做 数组越界,就是bug
用下标法引用数组元素时,a[x]和普通变量用法一致
例:
int a[10];
printf("%d",a[0]);//访问第一个元素
....
printf("%d",a[9]);
输出是随机值,因为没有给数组的每个元素赋值
怎么赋值
a[下标] = 值;
a[0] = 1;
如果是键盘输入
scanf("%d",&a[下标]);
练习:
定义一个数组,从键盘输入数据,给所有元素赋值,然后输出所有元素
int a[5];
int i;
for(i = 0;i < 5;i++)
{