数组学习知识 目录一、一维数组数组的类型创建初始化数组完全不完全初始化数组的类型数组的下标数组的内存存储二、二维数组二维数组的介绍二维数组的下标二维数组的输入输出二维数组的存储三、c99变长数组四、练习正文一、定义数组是⼀组相同类型元素的集合数组中存放的是1个或者多个数据但是数组元素个数不能为0。数组中存放的多个数据类型是相同的。数组分为⼀维数组和多维数组多维数组⼀般⽐较多⻅的是⼆维数组。2.数组创建⼀维数组创建的基本语法如下type_arr_name[常量数组]存放在数组的值被称为数组的元素数组在创建的时候可以指定数组的⼤⼩和数组的元素类型。•type指定的是数组中存放数据的类型可以是char、short、int、float等也可以⾃定义的类型。•arr_name指的是数组名的名字这个名字根据实际情况起的有意义就⾏。•[]中的常量值是⽤来指定数组的⼤⼩的这个数组的⼤⼩是根据实际的需求指定就⾏。比如3.数组的初始化有时候数组在创建的时候我们需要给定⼀些初始值这种就称为初始化的。那数组如何初始化呢数组的初始化⼀般使⽤⼤括号将数据放在⼤括号中。数组如果进⾏了初始化数组的⼤⼩是可以省略掉的。4.⼀维数组的使⽤学习了⼀维数组的基本语法⼀维数组可以存放数据存放数据的⽬的是对数据的操作5.数组下标C语⾔规定数组是有下标的下标是从0开始的假设数组有n个元素最后⼀个元素的下标是n-1下标就相当于数组元素的编号如下int arr[10] {1,2,3,4,5,6,7,8,9,10};6.在C语⾔中数组的访问提供了⼀个操作符[]这个操作符叫下标引⽤操作符。有了下标访问操作符我们就可以轻松的访问到数组的元素了⽐如我们访问下标为7的元素我们就可以使⽤arr[7]想要访问下标是3的元素就可以使⽤arr[3],如下代码7.数组元素的打印接下来如果想要访问整个数组的内容那怎么办呢只要我们产⽣数组所有元素的下标就可以了那我们使⽤for循环产⽣0~9的下标接下来使⽤下标访问就⾏了。如下代码8.数组的输⼊明⽩了数组的访问当然我们也根据需求⾃⼰给数组输⼊想要的数据如下9.⼀维数组在内存中的存储有了前⾯的知识我们其实使⽤数组基本没有什么障碍了如果我们要深⼊了解数组我们最好能了解⼀下数组在内存中的存储。依次打印数组元素的地址从输出的结果我们分析数组随着下标的增⻓地址是由⼩到⼤变化的并且我们发现每两个相邻的元素之间相差4因为⼀个整型是4个字节。所以我们得出结论数组在内存中是连续存放的。这就为后期我们使⽤指针访问数组奠定了基础在讲指针的时候我们在再讲这⾥暂且记住就⾏。10.sizeof 计算数组元素个数在遍历数组的时候我们经常想知道数组的元素个数那C语⾔中有办法使⽤程序计算数组元素个数吗答案是有的可以使⽤sizeof。sizeof中C语⾔是⼀个关键字是可以计算类型或者变量⼤⼩的其实sizeof也可以计算数组的⼤⼩。⽐如这⾥输出的结果是40计算的是数组所占内存空间的总⼤⼩单位是字节。我们⼜知道数组中所有元素的类型都是相同的那只要计算出⼀个元素所占字节的个数数组的元素个数就能算出来。这⾥我们选择第⼀个元素算⼤⼩就可以。接下来就能计算出数组的元素个数二、二维数组1.定义如果我们把⼀维数组做为数组的元 素这时候就是⼆维数组⼆维数组作为数组元素的数组被称为三维数组⼆维数组以上的数组统称为多维数组。type_arr[常量1][常量2] //例如 int arr[3][5]; double date[2][8];2.初始化包含完全初始化和不完全初始化int arr1[3][5]{0}; int arr2[2][1]{3,1}; //不完全初始化 // 行 列 int arr3[3][5]{1,1,2,3,4, 2,3,4,5,6, 1,2,3,4,5}; //完全初始化int arr4[3][4]{{1,2},{3,4},{5,6}};3.初始化时省略⾏但是不能省略列int arr5[][3]{2,3,4};4.⼆维数组的下标当我们掌握了⼆维数组的创建和初始化那我们怎么使⽤⼆维数组呢其实⼆维数组访问也是使⽤下标的形式的⼆维数组是有⾏和列的只要锁定了⾏和列就能唯⼀锁定数组中的⼀个元素。C语⾔规定⼆维数组的⾏是从0开始的列也是从0开始的5.⼆维数组的输⼊和输出访问⼆维数组的单个元素我们知道了那如何访问整个⼆维数组呢其实我们只要能够按照⼀定的规律产⽣所有的⾏和列的数字就⾏以上⼀段代码中的arr数组为例⾏的选择范围是0~2列的取值范围是0~4所以我们可以借助循环实现⽣成所有的下标。6.⼆维数组在内存中的存储像⼀维数组⼀样我们如果想研究⼆维数组在内存中的存储⽅式我们也是可以打印出数组所有元素的地址所以⼆维数组中的每个元素都是连续存放的三变长数组C99中给一个变长数组variable-length array简称 VLA的新特性允许我们可以使用变量指定数组大小。int main() { int n 0; scanf(%d, n);//根据输入值确定数组大小 int arr[n]; for(i0;in;i) { scanf(%d, arr[i]); } for(i0;in;i) { printf(%d, arr[i]); } return 0; }