目录
数组的概念
数组是⼀组相同类型元素的集合。
- 数组中存放的是1个或者多个数据,但是数组元素个数不能为0。
- 数组中存放的多个数据,类型是相同的。
数组分为⼀维数组和多维数组。
⼀维数组的创建和初始化
1.数组创建
基本语法如下:
- type 指定的是数组中存放数据的类型,可以是: char、short、int、float 等,也可以自定义的类型。
- arr_name 指的是数组名的名字。
- [ ] 中的常量值是⽤来指定数组的大小的,这个数组的大小是根据实际的需求指定就行。
存放在数组的值被称为数组的元素,数组在创建的时候可以指定数组的大小和数组的元素类型。eg:char ch[8]; //存储某个班级的20⼈的数学成绩
2.数组的初始化
数组在创建的时候,我们需要给定⼀些初始值,这种就称为初始化。
数组的初始化⼀般使用大括号,将数据放在大括号中。
可以不指定大小
如果给数组初始化的话,可以不指定大小。//数组大小根据初始化内容决定。
3.数组的类型
数组也是有类型的,数组算是⼀种⾃定义类型,去掉数组名留下的就是数组的类型。
eg:int arr1[10]; //int是数组元素的类型
//arr1数组的类型是 int [10]
⼀维数组的使用
数组下标
定数组是有下标的,下标是从0开始的,假设数组有n个元素,最后⼀个元素的下标是n-1,下标就相当于数组元素的编号。
如:int arr[10] = {1,2,3,4,5,6,7,8,9,10}
下标引用操作符
作用:访问到数组的元素。
如:访问下标为7的元素,就可以使⽤ arr[7]。
数组元素的打印
如果想要访问整个数组的内容,只要我们产生数组所有元素的下标就可以了,那我们使用for循环产生0~9的下标,接下来使用下标访问就行了。
数组的输入
明白了数组的访问,当然我们也根据需求,自己给数组输⼊想要的数据,如下:
一维数组在内存中的存储
想要了解数组在内存中的存储,可以依次打印数组元素的地址:
运行结果:
//从输出的结果我们分析,数组随着下标的增长,地址是由小到大变化的,并且我们发现每两个相邻的 元素之间相差4(因为⼀个整型是4个字节)。
结论:
一维数组在内存中应该是连续存放地。
//这就为后期我们使用指针访问数组奠定了基础。
为了观察方便,可以将x64改成x86
//为了观察方便,可以将x64改成x86。
- x86对应32位环境
- x64对应64位环境
%p,%x
%p,%x是专门用来打印地址的。
特点:
相同点:都是16进制的形式打印。
不同点:
%p最前面的0不会省略。(大写)
%x前面的0会省略。(%x小写;%X大写)
//要使%x前面的0不省略,可以在x前面加# 如:%#x
sizeof 计算数组元素个数
sizeof 中C语⾔是⼀个关键字,是可以计算类型或者变量⼤⼩的,其实 sizeof 也可以计算数组的 ⼤⼩。
1)计算数组所占内存空间的总大小
//也可以写成printf("%d\n", sizeof(int[10]));
//输出的结果是40,计算的是数组所占内存空间的总⼤⼩,单位是字节。
//一个int是4个字节。
2)计算⼀个元素的大小
3)计算出数组的元素个数
//结果是:10,表示数组有10个元素。
实例
strlen与sizeof的区别
strlen求字符串长度,只能针对字符串。