【C语言】数组详解,初学者一看就懂

你每天都在做很多看起来毫无意义的决定,但某天你的某个决定就能改变你的一生。——《西雅图不眠夜》 


目录

什么是C语言数组?

1、一维数组的创建与初始化

1.1数组的创建格式

1.2数组的初始化

1.3一维数组的使用

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

2、二维数组的创建与初始化

2.1二维数组的创建格式

2.2二维数组初始化

2.3二维数组的使用

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

3、越界数组

4、为什么数组下标是从0开始的?

5、数组作为函数参数

5.1冒泡排序函数的错误设计

5.2数组名到底是什么?

5.3冒泡排序函数的正确设计


什么是C语言数组?

  • 首先,从字面了解数组是一堆数字组成的集合。C语言中数组是一组固定大小且相同类型元素的集合。数组分为一维数组和二维数组。
  • 数组类型的声明并不是对一个元素进行声明而是对整个数组里面的元素类型都进行声明。
  • 所有的数组元素都是在一块连续的地址上的存储的,第一个元素占最低的地址,最后一个元素占最高的地址。
  • 数组的下标从0开始到元素的个数减1结束。


1、一维数组的创建与初始化

1.1数组的创建格式

数组是由数组类型+数组名+数组大小组成的,其中最重要的是数组大小是一个常量表达式。结合下图理解:


 🤼数组的创建格式有四种情况,如下所示:

情况1,定义一个数组并给定数组大小

int arry1[10];//未初始化的名为arry1的整形数组大小是10


情况2,定义一个常量并给定数组大小为这个常量

const int a=5;//定义一个常量a=5

int arry5[a];//未初始化的名为arry5的整形数组大小是5


情况3,数组大小为常量表达式

int arry6[5+6];//未初始化的名为arry6的整形数组大小是11


情况4,空数组

int arry7[];//未初始化的名为arry7的整形数组大小未知


温馨提示以上均是用整形定义的,您可以定义其他类型。

注意:数组创建,在C99标准之前, [] 中要给一个常量才可以,不能使用变量。在C99标准支持了变长数组的概念,数组的大小可以使用变量指定,但是数组不能初始化。


1.2数组的初始化

在了解数组的创建格式后,我们来看数组的初始化。初始化就是在创建数组后给定数组里面与数组类型相同的元素。初始化又分为完全初始化和不完全初始化,我们来看代码:

    1、int arry[10] = { 0 };//完全初始化
    2、int arry1[6] = { 1,2,3 };//不完全初始化
	3、int arry2[5] = { 1,2,3,4,5 };//完全初始化
	4、char arry3[] = { 'a','b','c' };//完全初始化
	5、char arry4[] = { 'a','b',66,'c' };//完全初始化
	6、char arry5[] = "abcdef";//完全初始化
    7、char arry6[10] = "abc";//不完全初始化

以上代码1~7我依次来讲解:

1、int arry[10] = { 0 };arry数组是完全初始化,10个元素全是0

2、int arry1[6] = { 1,2,3 };arry1数组是不完全初始化,我们初始化了前三个元素,剩余的三个元素默认初始化为0。那么前三个元素是1,2,3。后三个元素是0,0,0


3、int arry2[5] = { 1,2,3,4,5 };arry2数组是完全初始化,5个元素都初始化了。

4、char arry3[] = { 'a','b','c' };arry3数组是完全完全初始化,它不指定元素的个数。但编译器通过初始化内容来确定该数组元素的个数。


5、char arry4[] = { 'a','b',66,'c' };arry4也是完全初始化,它也没指定元素的个数,编译器通过初始化内容来确定该数组元素个数。其中66虽然是整型数字,但是数组类型是char所以编译器也认为66对应的是字符B。B的ASCLL码是66。

6、char arry5[] = "abcdef";

评论 45
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只爱打拳的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值