C (第九章 数组)

渐渐的, 多了一份来自岁月的顺从与敬意;
慢慢的, 多了一份来自生活的从容与淡然.

9. 数组

9.1 数组的定义

定义: 一组相同类型元素的集合.

9.2 数组的分类
9.2.1 一维数组

(1) 一维数组的创建
数组创建, [ ] 中要给一个常量才可以, 不可以使用变量.
(2) 一维数组的初始化
指在创建数组的同时给数组中内容赋予一些和的初始值, 即数组的初始化, 例如: int arr[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
(3) 一维数组的使用

  • 使用下标来访问, 下标是从 0 开始的;
  • 下标引用操作符 [ ];
  • 数组的大小可以通过计算得到.

(4) 一维数组在内存中的存储
结论: 一维数组在内存中是连续存储的.

9.2.2 二维数组

(1) 二维数组的创建

 - int arr[3][4];
 - int arr[][4];
 - 一般形式: 类型说明符 数组名 [常量表达式][常量表达式];

(2) 二维数组的初始化

  • 分行给二维数组赋初值.
例如: int a[3][4] = {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}};
  • 可以将所有的数据写在一个花括号内, 按数组元素在内存中的排列顺序对各元素赋初值.
例如: int a[3][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
  • 可以对部分元素赋初值.
例如: int a[3][4] = {{1}, {0, 6}, {2, 3, 4}};
等价于int a[3][4] = {1, 0, 0, 0, 0,  6, 0, 0, 2, 3, 4, 0};
  • 如果对全部元素赋初值 (即使提供全部数据), 则定义数组时对第一维的长度介意不指定, 但是第二维的长度一定不能省略.
例如: int a[][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};

(3) 二维数组的使用
二维数组的使用也是通过下标的方式来操作的.
(4) 二维数组在内存中的存储
结论: 二维数组在内存中的存储是连续存储的.

9.2.3 字符数组

(1) 字符数组的定义
用来存放字符数据的数组即为字符数组.
(2) 字符数组的初始化
如果在定义字符数组时不进行初始化, 则数组中各元素的值是不可预料的;
如果花括号中提供的初值个数 (即字符个数) 大于数组长度, 则出现语法错误;
如果初值个数小于数组长度, 则只将这些字符赋给数组中前面那些元素, 其余的元素自动定位空字符;
如果提供的初值个数与预定的数组长度相同, 在定义数组时可省略数组长度, 系统会自动根据初值个数确定数组长度.
(3) 字符串和字符串结束的标志

  • C系统在使用字符数组存储字符串常量时会自动加一个 ‘\0’ 作为结束符;
  • ‘\0’ 代表ASCII码为 0 的字符, 用它来作为字符串结束标志不会产生附加的操作或增加有效字符, 只起到一个供辨别的标志.
  • 字符数组并不要求它的最后一个字符为 ‘\0’, 甚至可以不包含 ‘\0’.
9.2.4 数组作为函数的参数
  1. 数组传参, 如果函数内部需要知道数组元素的个数, 应该在函数外部算出元素个数, 以参数的形式传递给函数;
  2. 数组作为函数参数的时候, 不会把整个数组传递过去, 实际上只是把数组的首元素地址传递过去了, int arr[ ]表示的是int* arr.
9.3 数组的访问形式
9.3.1 下标访问
9.3.2 指针访问
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值