
数组是一组相同类型元素的集合在C语言中根据数组下标个数我们把数组分成一维和二维数组二维及以上统称多维数组下面我们就来详细介绍一维与二维数组。一、一维数组1.语法结构数组元素类型 数组名[数组下标]这里有三个概念数组元素类型数组名数组下标。1数组元素类型这个概念要与数组类型区分开数组类型是指数组去掉数组名剩下的这个单指数组里元素数据类型。2数组名指数组的名称这个可以自己根据需要命名。3数组下标指数组元素个数从0开始如int arr[10]的数组下标范围就是0到9十个数这个大家灵活判断。公式为0~n-1n为元素个数2.初始化指的是数组创建时给的初始值如果不给的话系统会自动赋值除非你用scanf函数自行输入。一般用大括号将数组元素放在大括号中用逗号隔开。我们举个例子如 int arr[10]{1,2,3,4,5,6,7,8,9,10}这个叫作完全初始化就是数组所有元素都有赋值还有不完全初始化就是有些元素有赋值有些没有就好比这个例子int arr[10]{1,2,3,4,5};大家要记住不完全初始化中未赋值的元素系统会自动赋为0。还有一个点就是数组一旦初始化了它的大小也就随之确定了下标就可省略了但是大家一开始先不要这样写的时候最好还是把下标带上。3.数组类型刚才说过数组类型就是数组去掉数组名后剩下的东西如int arr[10];它的数组类型是int [10]。4.计算数组占的字节我们一般用sizeof函数来计算数组占的字节数代码很简单:#include stdio.h int main() { int arr1[10]; printf(%zd\n,sizeof(arr1)); //int数据占4个字节一共10个元素占40个字节,sizeof函数输出类型是%zd return 0; }printf语句这样写也是对的printf(%zd\n,sizeof(int [10]));如果把10改为5结果为20大家应该知道是为什么吧。5.数组元素打印我们使用循环来打印数组元素while和for均可这里我们把两种方法都介绍一下。#include stdio.h int main() { int i0; int arr[5]{1,2,3,4,5}; while(i5) { printf(%d\n,arr[i]); i; } return 0; }#include stdio.h int main() { int arr[5]{1,2,3,4,5}; for(i0;i5;i) { printf(%d\n,arr[i]); } return 0;其实两种方法没有本质上的区别基本一样都是循环五次然后自增打印数组元素。6.数组元素的输入输出我们借助scanf输入函数for或while循环里面写printf函数打印输出。如果想从大到小输入就这样写for(i5;i0;i--)下面我们就利用这两种方法写一下代码#include stdio.h int main() { int i0; int arr[5]{0}//数组初始化 while(i5) { scanf(%d,arr[i]); i; } i0;//这里极易犯错误因为前面已经写了一个循环了这里要将i复原为0 while(i5) { printf(%d ,arr[i]); i; } return 0; }#include stdio.h int main() { int i0; int arr[5]{0}; for(i0;i5;i) { scanf(%d,arr[i]); } for(i0;i5;i) { printf(%d ,arr[i]); } return 0; }这里用for循环就不需要更改i的值这是因为在每个for循环开始之前都会强制将 i 的值重置为0也是这类题用的最多的一类写法。7.数组在内存中的存放数组在内存中是连续存放的。具体原理太复杂大家记住就行了8.用sizeof函数计算数组元素个数#include stdio.h int main() { int arr[20]{0}; int i0; printf(%zd\n,sizeof(arr)/sizeof(arr[0]));//计算元素个数 //数组总长度 一个元素的长度 return 0; )在这个例子中我们知道数组总长度是80整型数据一个元素长度为4算出来个数为20和给的数组一样。我们可以利用这个方法输出数组元素#include stdio.h int main() { int arr[20]{0}; int i0; int szsizeof(arr)/sizeof(arr[0]);//计算元素个数 for(i0;isz;i) { printf(%d ,arr[i]);//用循环输出元素 } return 0; }