本章重点:
一、 一维数组的创建和初始化
- 创建时,【】内必须是常量,这样创建是错误的。(不能是变量)
- 这两种对字符类型的初始化都可以,值得注意第二种相当于把\0存储进去,但显示还是0
- 对sizeof和strlen的理解:sizeof计算数组所占空间的大小,而srtlen计算的是字符串的长度,遇到\0就停止计算。
剖析sizeof和strlen的区别
- 二者并无关联
- strlen是求字符串长度,只能针对字符串求长度///sizeof 计算变量、数组、类型的大小---单位是字节
- strlen是库函数,需要引头文件,而sizeof是操作符
易错题
输出结果:4 3 3 随机值
最后一个易错:第二种没有出现\0,而srelen 只有遇到\0才会停止,所以是随机值
二、一维数组在内存中的存储
结论:数组在内存中是连续存放的。
每个地址相差4,一个整型,4个字节。
三、二维数组的创建和初始化
1、二维数组的创建
第一个【】为行,第二个【】为列,类似于行列式。
2、二维数组的初始化
每一个单独的【】都是一行。
TIP:行可以省略,但列不可省略!
对行和列的标号也是从0开始
三、二维数组在内存中的存储
重要理解:可以将二维数组arr【0】第一个中括号堪称数组名,第二个中括号看成下标,直接转化为一维数组!
四、数组作为函数参数
函数冒泡排序----flag
TIP:
为什么向一个函数传入一个数组的首地址,就可以对数组后面的元素进行操作?
因为数组名称代表就是数组分配的内存映射地址首地址,而数组的存储地址是连续的,这就是说:只要知道数组的首地址和数组类型(一个数组元素的分配空间)就可以访问任意下标的数组元素。
输出结果一样,可见数组名就是首元素地址。但有两个例外
&数组名特别记忆,表示整个数组