C语言基本语法--数组

数组的概念:

数组是一组相同类型元素的集合,可以存放一个或者多个数组,但是数组元素个数不能为0

分类:

数组分为一位数组和多维数组,多维数组中常见的为二维数组。

数组的创建:

type为数据类型;可以是

也可以自定义的类型

arr_name为数组名;起的有意义即可(有多种命名法,如驼峰命名法,在这边不做展开)

[常量值]是创建数组的大小;这个大小根据实际的需要来确定。

数组的初始化:

在数组创建的时候,我们就给定数组一些值,这就叫做数组的初始化。

初始化的数据一般要放在大括号里面{};

初始化分为完全初始化和不完全初始化;

注意:初始时给出的元素个数不能超过数组的大小;

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

当[]里的数字不写时,数组的大小将会根据初始化时数据的个数决定。

数组的类型:数组的类型算是一种自定义类型,去掉数组名就是数组的类型。

一维数组的使用:

学习了一维数组的基本语法之后,我们来进行一维数组的使用

数组下标:C语言规定数组是有下标的,假设数组有n个元素,最后一个下标就是n-1;下标是数组元素的编号。

在C语言中,我们1提供了一个下标引用操作符[]

当我们想访问arr数组中下标为3的元素时,我们就写arr[3]

数组元素的打印:

print("%d",arr[x])

其中%d指的是换成数组所对应的具体类型;arr是数组名;x是访问的下标数;

如果想打印整个数组,可以使用for循环,将下标数字都循环一遍。

数组的更改:我们也可以根据需要将数组对于的元素更改为需要的值

arr[x] = y;

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

需要了解一位数组在内存中到底是怎么存储的,让我们来看看数组的地址

结果:

结果分析:从结果中看,数组随着下标增长,地址由小变大,并且每两个元素之间相邻4(因为一个整形是4个字节)。我们得出一个结论:数据在内存中是连续存放的。这位以后指针的学习打下基础。

sizeof计算数组元素个数

优点:

二维数组:如果我们把一位数组当作数组的元素,此时得到的数组就是二维数组,如果将二位数组当作数组元素,此时得到的数组就是三维数组,二维数组以上都叫做多维数组。

二维数组的创建:

其中:3代表数组有3行;5表示每一行有5个元素

二维数组的初始化:

二维数组的不完全初始化:

完全初始化:

按照行初始化:

注意:初始化时可以省略行,但是不能省略列;

二维数组的使用:

二位数组的访问:arr[x][y];

x为第x行,y为第y列;

二维数组的输入和输出:我们可以借助循环来遍历生成所有代码

二维数组在内存中的存储:
我们通过打印出二维数组的所有元素地址打印出来来探索

输出的结果:

C99的变长数组:

C99之前,数组的大小是用常量确定的(vs默认不支持C99中的变长数组,所以我们可以借助gcc编译器来使用变长数组)

C99之后,引入了变长数组的概念,可以使用变量指定数组的大小

练习题:

练习1:多个字符从两端移动,向中间汇聚。

练习2:⼆分查找 在⼀个升序的数组中查找指定的数字n,很容易想到的⽅法就是遍历数组,但是这种⽅法效率⽐较低。 ⽐如我买了⼀双鞋,你好奇问我多少钱,我说不超过300元。你还是好奇,你想知道到底多少,我就让 你猜,你会怎么猜?你会1,2,3,4...这样猜吗?显然很慢;⼀般你都会猜中间数字,⽐如:150,然 后看⼤了还是⼩了,这就是⼆分查找,也叫折半查找。

答案会在下一个课件中显示(指针)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值