目录:
一、一维数组
1.1、数组的创建方式:
数组是有限个相同类型数据元素的集合。
type_t arr_name [const_n];
//type_t 是指数组的元素类型
//const_n 是一个常量表达式,用来指定数组的大小
创建例子:
注意:数组在创建时,[]里的必须是常量。但是如果编译器支持C99标准的话可以使用变量。
1.2、数组的初始化:
数组的初始化是指,在创建数组的同时给数组的内容一些合理初始值(初始化)。 看代码:
//不完全初始化
int arr1[10] = {1,2,3};
//省略大小的初始化
int arr2[] = {1,2,3,4};
//完全初始化
int arr3[5] = {1,2,3,4,5};
总结:
1.数组在创建时如果不指定数组的长度就要给数组初始化,数组根据初始化的值来确定数组大小。
2.数组如果不初始化默认值是0。
1.3、一维数组的使用
对于数组的使用我们介绍一个操作符: [] ,下标引用操作符。它其实就是数组访问的操作符。
如果我们想访问 arr第2个元素,我们就可以用 arr[1]的方式去访问。
代码:
数组是通过下标来访问的,下标是从0开始的。
1.4、一维数组的存储方式
我们来研究一下一维数组在内存中的存储方式,我们通过输出数组各元素地址的方式来研究。
代码如下:
输出地址我们用%p的格式,我们可以看到数组的每个元素地址都相差一个整形(4个字节),所以一维数组在内存当中是连续存放的。
注意:这里相差4个字节,是因为我的数组是整形类型的,如果定义别的数据类型,就会相差对应的大小。
总结:
1.一维数组在内存中是连续存放的。
2.地址是从低到高分配的
二、二维数组
2.1、二位数组的创建
说完了一维数组,二维数组就是一维数组的扩展。
二位数组的创建:
arr [ ][ ] 第一个[ ]是行,第二个[ ]是列。
2.2、二维数组的初始化
二位数组的行可以省略 ,但列不能省略。
2.3、二位数组的使用
二位数组的使用也是通过下标的方式访问:
2.4、二位数组的存储方式
我们还是通过看地址的方式来研究
根据上图我们发现二维数组也是一块连续的空间
三、数组的数据类型
数组也是有类型,正如:整数为整型类型,字符为字符类型等等。
而数组类型该是怎样的呢?
你也许可能会猜:假如一个这样的数组 int arr[10],是不是就是int类型。可结果且大失所望。
不难推测,如果我给你一个整型的变量,形如下面:
int a = 10;
当我问你int a的数据类型是什么时,你会毫不犹豫的说整形,那我问你为啥是整形是,你说记住了。
不妨我们换个思路,int a去掉a剩下int,是不就是int类型了,char b去掉b是不就是char类型了。
基于这种思路,我们再来拆分数组的数据类型就简单多了。
int arr[10]去掉arr,int [10]就是数组的类型。
我们可以用vs调试来验证一下