C语言-数组

数组(Array)

什么是数组?

数组同类型有序数据的集合

它所包含的每一个数据叫做数组元素(Element),所包含的数据的个数称为数组长度(Length)

数组的内存是连续的

数组中的每一个数据叫做数组元素 Element,数组中的每个元素都有一个序号,这个序号从 0 开始,称为下标 Index

数组名代表着整个数组的地址,也就是数组的起始地址

一维数组:

注:其实a不算是变量,是个常量,它代表着数组的地址

数组a的地址是ffc1,a[0]的地址是ffc1,a[1]的地址是ffc3,a[2]的地址是ffc5。所以a == &a[0],即第一个元素的地址就是整个数组的地址

二维数组:

 

注:a[0]、a[1]也是数组,是一维数组,而且a[0]、a[1]就是数组名,因此a[0]、a[1]就代表着这个一维数组的地址

(1)数组a的地址是ffc1,数组a[0]的地址也是ffc1,即a = a[0];

(2)元素a[0][0]的地址是ffc1,所以数组a[0]的地址和元素a[0][0]的地址相同,即a[0] = &a[0][0];

(3)最终可以得出结论:a = a[0] = &a[0][0],以此类推,可以得出a[1] = &a[1][0]

数组:一维数组、二维数组


一维数组:

一维数组定义:

类型说明符   数组名[数组长度];

例如:

float m[12]; //定义一个长度为 12 的浮点型数组

char ch[9]; //定义一个长度为 9 的字符型数组

数组初始化:

例:

int   a[100]={0,,1,2,3,4};

//其元素分别是a[0]~a[99]

//定义一个整形数组a,前5个元素赋值为1,2,3,4,5,剩余的95个元素值默认为0

定义时初始化可以一维数组不定义数组长度

例:

  char a[]={"hello world"};

二维数组(多维数组):

二维数组中的元素是通过使用下标(即数组的行索引列索引

二维数组定义:

类型说明符 数组名[行数][列数];

例如:

int   a[2][3];

定义的结果:

a[0][0], a[0][1], a[0][2], a[0][3]
a[1][0], a[1][1], a[1][2], a[1][3]
a[2][0], a[2][1], a[2][2], a[2][3]

(可以将二维数组看成一个坐标系,有 x 轴和 y 轴,要想在一个平面中确定一个点,必须同时知道 x 轴和 y 轴)

行为x轴,列为y轴

二维数组初始化:

二维数组有两种赋值方式:

一、按行赋值

类型说明符 数组名[行数][列数]={{元素1,,元素2,...,元素n},{元素1,,元素2,...,元素n},{元素1,,元素2,...,元素n},...,{元素1,,元素2,...,元素n}};

例:

按行赋值:

int a[3][4]={{1,2,3,4},{10,20,30,40},{100,200,300,400}}; 

//定义一个三行四列的二维数组,按行赋值,{1,2,3,4}是第一行,{10,20,30,40}是第二行,{100,200,300,400}是第三行

二、按个数赋值

类型说明符 数组名[行数][列数]={元素1,元素2元素1,元素3,元素4,元素5,...,元素n};

例:

按个数赋值:

int a[3][4]={1,2,3,4,10,20,30,40,100,200,300,400}; 

//定义一个三行四列的二维数组并对其中的12(3*4)个元素进行赋值

结果:a[0][0]=1, a[0][1=2], a[0][2]=3, a[0][3]=4
           a[1][0]=4, a[1][1]=10, a[1][2]=20, a[1][3]=40
           a[2][0]=100, a[2][1]=200, a[2][2]=, a[2][3]=300

int a[3][4] = { {0, 1, 2, 3} , /* 初始化索引号为 0 的行 */

                     {4, 5, 6, 7} , /* 初始化索引号为 1 的行 */

                     {8, 9, 10, 11} /* 初始化索引号为 2 的行 */

                   };

(依次为arry[0][0]~arry[2][3]共12个元素)

 注: 如果对二维数组的初始化,那么第一维的长度是可以缺省的,但是第二维不可缺省

int main()
{
    int ar[ ][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 };        // 3 行 4 列
    int br[ ][4] = { {1,2},{3,4},{5,6} };                       // 3 行 4 列 数字不足自动补 0
    int cr[ ][4] = { 1,2,3,4,5,6,7,8 };                         // 2 行 4 列
    return 0;
}

注:一维数组与二维数组中“[ ]”里的表示的是数组的长度(大小),都是从0开始n-1结束

引用:C语言 数组定义和使用 - C语言零基础入门教程_c语言数组_猿说编程的博客-CSDN博客C语言一维数组的定义和使用 - C语言教程 - C语言网 (dotcpp.com)

C语言二维数组的定义和使用 - C语言教程 - C语言网 (dotcpp.com)

C 多维数组 | 菜鸟教程 (runoob.com)

C 数组 | 菜鸟教程 (runoob.com)C 语言之二维数组(详细版)_c语言二维数组_WartenSIEl的博客-CSDN博客什么是数组?C语言数组的基本概念 (biancheng.net)C语言必学知识点详解【C语言 - 数组】! - 知乎 (zhihu.com)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值