数组
- 概念:用来存储具有
相同类型
的多个元素 - 定义
// 格式:元素类型 数组名[元素个数] 1. 先定义再完全初始化 int ages[5]; ages[0] = 18; ages[1] = 18; ages[2] = 18; ages[3] = 18; ages[4] = 18; 2. 定义同时不完全初始化 int ages[5] = {18, 18, 18}; 3. 定义同时完全初始化 float heights[5] = {1.99f, 1.99f, 1.99f, 1.99f, 1.99f}; 注意: (1) 如果先定义再 不完全 初始化,那么部分元素可能是一段 垃圾数据 int ages[5]; ages[0] = 18; ages[1] = 18; printf("0 = %i\n", ages[0]); printf("1 = %i\n", ages[1]); printf("2 = %i\n", ages[2]); printf("3 = %i\n", ages[3]); printf("4 = %i\n", ages[4]); (2) 如果定义同时 不完全 初始化, 那么 没有被初始化 的元素,默认是 0 int ages[5] = {18, 18, 18}; printf("0 = %i\n", ages[0]); printf("1 = %i\n", ages[1]); printf("2 = %i\n", ages[2]); printf("3 = %i\n", ages[3]); printf("4 = %i\n", ages[4]); (3) 如果定义同时完全初始化,那么元素的个数可以 省略 int ages[] = {18, 18}; printf("0 = %i\n", ages[0]); printf("1 = %i\n", ages[1]); (4) 可以通过 [索引] = 方式,给 指定索引 元素赋值 int ages[101] = {[66] = 18, [88] = 18}; printf("0 = %i\n", ages[0]); printf("66 = %i\n", ages[66]); printf("88 = %i\n", ages[88]); (5) 不建议 使用 变量 作为 元素个数 (6) 只能定义 同时 使用 {} 进行初始化,若先定义那么就不能使用 {}
- 操作
- 获取单个元素
// items[index]:通过 下标 访问元素 int ages[] = {18, 18, 18}; int a = ages[2]; printf("2 = %i\n", a);
- 遍历
int ages[] = {18, 18, 18, 18, 18, 18}; int length = sizeof(ages) / sizeof(ages[0]); for (int i = 0; i < length; i++) { printf("ages[%i] = %i\n", i, ages[i]); }
- 获取单个元素
- 内存分配
- 地址:
charValues
==&charValues
==&charValues[0]
- 存储细节
1. 系统给数组分配 一块连续 的 存储空间 2. 数组名 代表数组的 首地址,从首地址位置,依次 存入元素 3. 每个元素占用 相同 的 字节数 4. 数组中元素之间的地址是 连续的
- 越界:
数据混乱
和程序崩溃
内存分配.pngchar numbers[] = {3, 2}; char values[] = {6, 6, 6}; values[3] = 66; printf("nums[0] = %i\n", nums[0]); nums[-1] = 88; printf("values[2] = %i\n", values[2]);
- 地址:
网友评论