C语言—数组(超详细)

目录

一、数组的概念

二、一维数组

2.1  一维数组的创建和初始化

2.2  一维数组的使用

​编辑

2.3  一维数组在内存中的存储

三、二维数组

3.1  二维数组的创建和初始化

3.2  二维数组的使用

3.3  二维数组在内存中的存储

四、总结


一、数组的概念

数组是一组相同类型元素的集合

  • 数组中存放的是1个或者多个数据,但是数组元素个数不能为0
  • 数组中存放的多个数据,类型是相同的
  • 数组分为一维数组和多维数组,多维数组一般比较多见的是二维数组

二、一维数组

2.1  一维数组的创建和初始化

一维数组创建的基本语法如下:

元素类型说明符  数组名[整常量表达式]  =  {元素初值列表}

int  arr[10]  =  {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};

  • 元素类型说明符用于定义数组元素类型,如int, char, double等等
  • 数组名即数组名称,命名规则同变量名相同
  • 整常量表达式代表数组的元素数
  • 元素初值列表为可选项,用于给数组各元素赋初值,为数组的初始化,有以下几种方式:.

     1.含全部元素初始值

int  arr[10]  =  {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};

     2.含部分元素初始值

int  arr[10]  =  {1, 2, 3, 4, 5};

则后5个元素由系统自动初始设置为0

    3.方括号内无元素数

int  arr[ ]  =  {1, 2, 3, 4, 5, 6};

省略方括号内不写,大括号内总共有6个数,则元素个数系统自动设置为6

    4.初值列表中初值数目不得超过数组元素数

int  arr[4]  =  {1, 2, 3, 4, 5};

数组给定大小为4,但初始化时给了5个元素,则编译时出错

2.2  一维数组的使用

C语言规定数组元素是有下标的,假设数组有n个元素,则最后一个元素的下表为n-1

int  arr[10]  =  {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};

C语言—数组(超详细)_第1张图片

其中,数组中有一个操作符,为下标引用操作符[ ],通过[ ],我们就可以访问到数组中的元素

比如我们想访问第3个元素,就用arr[2],想访问第5个元素,就用arr[4]

C语言—数组(超详细)_第2张图片

那么,要求数组中元素的个数,我们则可以使用如下方式:

printf("%d", sizeof(arr) / sizeof(arr[0]);

C语言—数组(超详细)_第3张图片

要想打印出整个数组,则使用循环:

C语言—数组(超详细)_第4张图片

2.3  一维数组在内存中的存储

先看代码:

C语言—数组(超详细)_第5张图片

这里我们通过将数组各个元素打印出来观察其地址,可知,一维数组在内存中是连续存放的

C语言—数组(超详细)_第6张图片

因为我们存放的是int类型的数据,大小为4个字节,则地址依次加4

由此可得,地址的依次增加的大小则会根据存放的数据的类型的改变而改变

三、二维数组

二维数组与一维数组相似,不同的地方就在于一维数组只有一行,而二维数组新引入了列的概念,有很多行

3.1  二维数组的创建和初始化

一维数组创建的基本语法如下:

元素类型说明符  数组名[行数][列数]  =  {元素初值列表}

行数和列数分别表示二维数组有多少行,多少列,例如:

int  arr[2][3]  =  {1,2,3,4,5,6};

该语句定义了一个2行3列的数组,则可存放2x3=6个元素

C语言—数组(超详细)_第7张图片

  • 二维数组的存放顺序是按行优先存放的
  • 在初始化时:

  1.含全部元素初始值

int  arr[2][3]  =  {1,2,3,4,5,6};

 2.含部分元素初始值

int  arr[2][3]  =  {1,2,3};

则后3个元素由系统自动初始设置为0

 3.分行赋初始值

int  arr[2][3]  =  {{1,2,3},{4,5,6}};

第一个花括号的数据赋给第一行,第二个花括号的数据赋给第二行

 4.初始化时,行数可以省略,列数不可以省略

int  arr[ ][3]  =  {{1,2,3},{4,5,6}};

系统自动识别为2行,因为有两个花括号

int  arr[ ][3]  =  {1,2,3,4,5,6,7,8,9};

每一行固定为3个数,所以系统自动识别为3行

3.2  二维数组的使用

与一维数组引用下标的访问方式类似,在引用下标访问二维数组元素时,会新增加一个下标

如我想要访问数组中第2行第3列的元素,就用a[1][2]

C语言—数组(超详细)_第8张图片

若要打印出整个二维数组,则要用两层循环

C语言—数组(超详细)_第9张图片

外层i是行,内层j是列,打印完一列之后换成下一行,同时不要忘记打印完一列后的\n换行

3.3  二维数组在内存中的存储

代码如下:

C语言—数组(超详细)_第10张图片

观察可知,二维数组在内存中也是连续存放的,一行存完,再存下一行

四、总结

关于数组的应用方面还会与比如指针,字符等方面结合应用,我会在之后的文章中添加,欢迎大家指正修改!

你可能感兴趣的:(c语言,算法,开发语言)