C语言学习笔记3:数组

数组的概念

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

一个数组可以存放个或者多个数据,但不能为空集,这样就没有意义了

数组存放的多个数据类型相同

一维数组

创建

基本语法形式

类型        数组名[常量值//数组的大小];

//类型可以是内置类型,也可以是自定义类型

例如

//一个班30个人的成绩

float score[30];

初始化

//完全初始化

int age[5] = {10,20,30,40,50};

//不完全初始化

double weight[10] = {50,40};

//初始化第一个元素50,第二个元素40,剩下8个元素默认初始化为0

//错误的初始化方式

int num[3] = {1,2,3,4};//元素数目多了

如果初始化了,就可以省略数组的大小,此时编译器会根据数组初始化内容来确认数组的真实大小例如

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

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

//这是两个相同的数组

类型

数组的类型就是去掉数组名留下的部分,这里要忘了“[ ]”

使用

数组可以用来储存数据,储存数据目的是操作数据

数组的下标

我们看个例子

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

这里我们可以看到数组元素与对应坐标相差1,这里就可以把数组类比为矩阵或者是向量了,数组的下标就是向量的坐标(这里忽略负值),一维数组即为一维向量,大家这样类比理解就好,如果没学过线性代数的朋友,推荐大家《线性代数及其应用》这本书,在B站搜线代的本质,两个搭配很舒服,线代对于工科是很重要的。

我们回过头来,C语言中数组的访问提供了一个操作符[ ],叫做下标引用操作符

比如我们想要访问下标为3的元素,就可以使用 cnt[3]

这下可以清晰看到数组元素与对应下标相差1

数组元素的打印

要牢记数组元素与对应下标相差1

数组的输入

一维数组在内存中的储存

我们现在打印数组的地址,需要用到&符    %p是地址的占位符

随着数组下标的增长,地址由小变大,每个相邻元素相差四(整型是四个字节)

所以得出结论:

sizeof计算数组元素个数

sizeof用于计算变量或者类型的长度,单位是字节

第一个打印的是整个数组的大小,第二个打印的是数组元素的个数

二维数组

二维数组是把一维数组作为元素的数组,三维数组是把二维数组作为元素的数组

这里就可以更好的利用矩阵和向量来理解了

图片源自网络

C语言三维数组 - 搜索 图片 (bing.com)

2维面,3维体

创建

基本语法形式:

类型        数组名[值常量1] [常量值2];

                         //     行            列

// int num[3] [4];

//三行四列(doge_),数组有三行,一行有四个元素

//num 是数组名

初始化

不完全初始化

int cnt1[3] [4] = {1,2};  //3*4=12个元素,依次初始化每一行的元素,不够时剩下的初始化为0

int cnt2[3] [4] = {0};//第一行第一列初始化为0,相当于全部都是0

完全初始化

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

我们初始化时,可以按行初始化,因为二维数组的元素是一维数组

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

初始化时可以行省略,但不能列省略,为什么?先要放满一行,如果列省略的话一行放几个元素呢?

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

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

使用

二维数组的输入和输出

二维数组在内存中的储存

行内部每一个元素相邻的,地之间相差4字节,跨行处的两个元素之间也相差4字节,所以二维数组每个元素连续存放

  • 16
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值