数组的知识点总结+例题

1.一维数组的创建和初始化

1.1数组的创建

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

数组的创建方式:

type_t         arr_name         [const_n]

//type_t是指数组的元素类型,const_n是用来指定数组的大小

数组创建,【】中要给一个常量才可以,常量表达式也可;不可使用变量。

 1.2数组的初始化

数组的初始化是指:在创建数组的同时给数组的内容一些合理初始值(初始化);

初始化的类型分为以下:

int arr【10】={1,2,3};//不完全初始化,剩余元素默认初始化为0;

int arr2【5】={1,2,3,4,5};//完全初始化

int arr4【】={‘a’,98,‘c'};//98是值得ASCII码值,可以查出是b字母

char arr6【】=“abcdef“;//根据初始化大小来分配

注意:

arr5【】={0};//只有一个元素

arr6【10】={0};//有10个元素

char arr1【】=”abc“;//默认数组里面有\0;

char arr2【】={’a‘,’b‘,’c‘};//里面没有\0

1.3一维数组的使用

让我们来看一个代码吧,打印出arr【】内容以及倒序打印出arr【】的内容

从上面的两个例子我们可以知道:

1.数组是使用下标来访问的,下标是从0开始的

2.数组的大小可以通过计算得到:int sz=sizeof(arr)/sizeof(arr[0]);        我们在之前的博客里面有讲到哦~

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

接下来让我们探讨数组在内存的存储吧~

输出的结果如下:

 

 可以看到,每个数组的地址均相差4,是因为int整型是占4字节一个地址

 

在图中我们可以得到结论:

1,数组在内存中是连续存放的

2,随着数组下标的增长,元素的地址也有规律的递增(从低到高) 

 2,二维数组的创建和初始化

 二维数组如果初始化(第一个【】代表行,第二个【】代表列),行可以省略,列不可以省略(行,列的下标都是从0开始)

2.3二维数组的使用

 让我们看一个例题吧~

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

实际上,二维数组是这样存放的

 

 由上面两个图可以知道,二维数组在内存中也是连续存储的。二维数组其实是一维数组的数组。随着数组下标的增长,元素的地址也有规律的递增(从低到高) 

 3.数组越界

数组的下标是由范围限制的。

数组的下标规定是从0开始的,如果数组由n个元素,最后一个元素的下标是n-1;

所以数组的下标如果小于0;或者大于1,就是数组越界访问了,超出了数组合法空间的访问。

c语言中本身不做数组下标的越界检查,编译器也不一定报错,但是编译器不报错并不意味这是正确的。

所以程序员写代码时,最好自己做越界的检查。

 i<=20,就已经说明了数组越界,输出结果是错误的

4,函数作为函数参数

首先,我们来探讨一下数组名是什么?

数组名是数组首元素的地址(有两个例外)

1.sizeof(数组名),计算整个数组的大小,数组名表示整个数组

2.&数组名,取出的是数组的地址。&数组名,数组名表示的是整个数组

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

好啦~本期数组的内容就讲到这里了~谢谢大家观看哦~

 

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值