《重生到现代之从零开始的C语言生活》—— 数组

数组

数组是个啥

数组是一组相同类型元素的集合
数组分为一维数组多维数组,多维数组比较常见的是二维数组

一维数组的创建和初始化

一维数组的建立的基本语法

type arr_name[常量]

存放的数组的值被称为数组的元素,在创建时可以指定数组的大小数组的元素类型
比如想创建某班20个人的数学成绩

int math[20]

数组的初始化

初始化有完全初始化不完全初始化

int arr[5] = {1,2,3,4,5};//完全初始化
int arr[5] = {1};//不完全初始化,其余的元素默认为0

数组的类型

int arr1 [3];
int arr2 [12];

arr1数组的类型是int [3]
arr2数组的类型是inr [12]
总之去除数组名字剩下的就是数组类型

一维数组的使用

C语言规定的数组是有下标

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

数组中元素的下标分别是0,1,2,3,4,下标从0开始
如果我想使用一个标,只需要直到他对应的下标,再来依据使用的方式使用他
比如我想访问下标是3的元素,那我们可以用arr[3]来访问,

print("%d",arr[3])//打印下数组中标为3的元素

当然,如果想输入一个元素嘞?

scanf("%d",&arr[3])//将下标为3的数组替换成输入的那个数

而且,数组在内存中是连续存放的,知道其中一个元素的地址,其他元素的地址是可以推出来的

sizeof计算数组元素的占用内存

sizeof是C语言的一个关键字,可以知道类型和变量的大小,当然也可以知道数组的大小(计算出元素占字节的大小)

#include <stdio.h>
int main( )
{
int arr[10] = {0};
print("%zd",sizeof(arr));//打印出arr这个数组占用了多少字节
return 0;
}

二维数组的使用

如果一维数组打印出来是一长溜元素,那么二维数组打印出来就是有行和列的总体像长方形形状的元素
那么二维数组怎么建立

int arr[//行][//列] = {1,2,3,4,5};//生成一个几行几列的二维数组

二维数组的初始化

如果不做变化的把二维数组的变量一直写下去

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

那么就从第一行开始顺着写下去,一行写满了就换行写,写不满的地方默认为0

如果想规定呢?

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

就是在第一行输入1和2,换行在第二行输入2和3,换行在第三行输入1和2(按顺序)

初始化省略

数组像字符串一样,可以省略数组元素的个数但是只能省略行不能省略列,因为列是不知道有多少的,电脑也不能按照你输入的值默认,因为电脑不知道你输入的值在哪里换行

二维数组的下标

二维数组和一维数组一样有下标,但是长什么样子呢?
一维数组可以用第几个来找到函数,二维数组也可以用第几行第几列来找到元素,下标同样从0开始递增,不过变成两个下标值定义

printf("%d",arr[2][3])//打印的就是第3行第4列的元素,因为从零开始递增,所以行列数加一

同样,二维数组和一维数组一样,都每个元素都是连续存放的,跨行处的元素也是连续的,意思是二维数组的元素在内存中应该是这样

1,2,3,4,5
6,7,8,9,1
2,3,4,5,6

事实上在内存中是这样表示的

1,2,3,4,5,6,7,8,9,1,2,3,4,5,6

都是连续存放的

C99中的变长数组

在C99标准之前,C语言在创建数组的时候,数组的大小指定只能用常量和常量表达式,或者可以省略数组大小
而C99中的一个变长数组的新特性允许我们可以使用变量指定数组大小

int n = 2 + 3
int arr[n]

这样数组的大小就更灵活
但是一些编译器不支持C99中的变长数组,像是VS2022,使用时要注意

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值