C++ 数组知识点

一维数组

数组声明

目的是在运行前分配内存空间,编译时要确定数组的大小。

类型 标识符[表达式]
  1. 表达式必须是整数
  2. 表达式可以是常量,不能是变量,表达式必须有确定的值,可以是常量运算表达式
  3. 声明后元素是随机值

数组定义和初始化

类型 标识符[表达式可以省略] = {常量值表}
  1. 按照下标顺序一个一个的对元素初始化
  2. 常量值表的常数可以小于等于数组元素个数,但是不能大于
  3. 常量值表给定常数不足,其余元素初始化为默认值
  4. 静态数组定义是不必初始化,元素都初始化为默认值
  5. 借助初始化值表,表达式可以省略,但是没有初始化值表则不可省略
  6. 经过测试,初始化值表中可以有变量,但是表达式不可是变量及其表达式

二维数组

数组说明

类型 标识符[表达式1][表达式2]
  1. 两个表达式的要求同一维数组
  2. 元素在内存中以高维优先的方式存放

数组的定义和初始化

类型 标识符[表达式1可省略][表达式2不可省略] = {初始值表}
  1. 初始值表内可以是多个低维的初始值表
  2. 如果初始值表是多个低维的初始值表,每个低维的初始值表内元素不用写全,用默认值
  3. 初始值表可以直接列举所有元素
  4. 利用初始值表可以省略最高维度长度说明,根据初始值表判断,但是不可省略较低维度的长度说明

二维数组举例

int array1[2][3] = {{1,2,3},{4,5,6}};
int array2[2][3] = {{1,2},{3}};
int array3[2][3] = {1,2,3,4,5,6};
int array4[][3] = {1,2,3,4,5,6};
int array5[][3] = {{1,2},{3}};

字符数组

字符数组的定义和初始化

C++ 中以 ‘\0’ 表示一个字符串的结束

逐个赋值

char 标识符[长度表达式可以省略] = {'a','b','c',...}
  1. 根据数组初始化统一要求,初始值表的个数不要大于长度
  2. 如果初始值表的个数小于长度,没有赋值的元素会被赋值为初始化值 ‘\0’
  3. 如果初始值表的个数等于长度,不会补 ‘\0’
  4. 长度表达式是可以省略的,此时如果初始值表中没有 ‘\0’,会自动补 ‘\0’

串常量初始化

char 标识符[长度表达式可以省略] = "...."
  1. C++ 对串常量自动添加结束标志 ‘\0’
### C++ 数组基础知识 #### 什么是数组数组是一种线性数据结构,用于存储相同类型的多个元素。它通过索引来访问其中的每一个元素,索引通常从 `0` 开始。 #### 定义与初始化 在 C++ 中,可以通过以下方式定义和初始化数组: 1. **简单定义** 使用指定大小来创建一个未初始化的数组。 ```cpp int arr[5]; // 创建了一个长度为5的整型数组 ``` 2. **带初始值列表的定义** 可以在定义的同时给数组赋初值。 ```cpp int arr[] = {1, 2, 3, 4, 5}; // 自动推导数组大小为5 double values[] = {1.1, 2.2, 3.3}; // 推导数组大小为3 ``` 3. **多维数组** 多维数组可以看作是一个数组数组。 ```cpp int matrix[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; // 初始化一个3x3矩阵 ``` #### 访问数组元素 通过索引访问数组中的单个元素: ```cpp int value = arr[0]; // 获取第一个元素 arr[1] = 10; // 修改第二个元素的值为10 ``` 注意:尝试访问超出范围的索引会引发未定义行为[^1]。 #### 遍历数组 遍历整个数组的一种常见方法是使用循环语句: ```cpp for (int i = 0; i < sizeof(arr)/sizeof(arr[0]); ++i) { cout << arr[i] << " "; } // 或者使用增强型 for 循环(仅适用于C++11及以上) for (auto element : arr) { cout << element << " "; } ``` #### 动态分配数组 如果不知道运行时所需的确切大小,则可利用动态内存管理技术: ```cpp int n; cin >> n; int* dynamicArr = new int[n]; delete[] dynamicArr; // 不再需要时释放内存 ``` 以上就是关于C++数组的一些基本概念及其应用实例[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值