一维数组是最简单的线性数据结构,由相同数据类型的元素构成,通过连续内存地址存储数据。每个元素通过从`0`开始的整数索引进行访问。
登录以参加训练计划
声明语法
// 静态数组(编译时确定大小)
数据类型 数组名[数组长度];
// 动态数组(运行时确定大小)
数据类型* 数组名 = new 数据类型[数组长度];
核心特性
- 固定长度 - 静态数组长度声明后不可修改
- 连续存储 - 元素在内存中顺序存放
- 随机访问 - 通过索引直接访问任意元素(时间复杂度O(1))
- 类型一致 - 所有元素必须为相同数据类型
初始化方式
// 声明时初始化(静态)
int numbers[5] = {1, 2, 3, 4, 5};
// C++11统一初始化
float temps[] {36.5, 37.0, 38.2};
// 动态数组初始化
char* chars = new char[10]{'a','b','c'};
内存分配
- 静态数组:分配在栈内存(Stack),自动回收
- 动态数组:使用
new
在堆内存(Heap)分配,需手动delete[]
// 释放动态数组
delete[] 数组名;
注意事项
- 数组越界访问会导致未定义行为
- 数组名表示首元素地址(指针常量)
- 数组长度计算:
sizeof(arr)/sizeof(arr[0])
(仅适用于静态数组) - C++推荐优先使用
std::array
(静态)或std::vector
(动态)
基础操作示例
#include <iostream>
using namespace std;
int main() {
// 声明并初始化
int scores[5] = {85, 90, 78, 92, 88};
// 修改元素
scores[2] = 80;
// 遍历数组
for(int i=0; i<5; i++){
cout << scores[i] << " ";
}
// 动态数组示例
int size = 3;
double* prices = new double[size]{9.99, 19.99, 29.99};
delete[] prices; // 必须释放内存
return 0;
}
典型应用场景
- 存储有限个同类型数据
- 实现其他数据结构的基础(栈、队列等)
- 需要快速随机访问的集合数据
- 缓冲区处理(音频、视频流)
章节 2. 黄金
无效
该章节目前不可挑战,请先完成以下章节:
- 章节 1. 白银 (已完成 0%)
题目 | 尝试 | AC | 难度 |
---|---|---|---|
2232 【深基5.例10】显示屏 | 0 | 0 | (无) |
2233 【深基5.习1】梦中的统计 | 0 | 0 | (无) |
2234 【深基5.习2】[NOIP2014 普及组] 珠心算测验 | 0 | 0 | (无) |
2235 【深基5.习3】爱与愁的心痛 | 0 | 0 | (无) |
2236 【深基5.习4】[USACO08OCT] Bovine Bones G | 0 | 0 | (无) |
章节 3. 铂金
无效
该章节目前不可挑战,请先完成以下章节:
- 章节 2. 黄金 (已完成 0%)
题目 | 尝试 | AC | 难度 |
---|---|---|---|
2237 【深基5.习5】开灯 | 0 | 0 | (无) |
2238 【深基5.习6】蛇形方阵 | 0 | 0 | (无) |
2239 【深基5.习7】杨辉三角 | 0 | 0 | (无) |
2240 【深基5.习8】Mc生存-插火把 | 0 | 0 | (无) |
2241 【深基5.习9】压缩技术 | 0 | 0 | (无) |
章节 4. 钻石
无效
该章节目前不可挑战,请先完成以下章节:
- 章节 3. 铂金 (已完成 0%)
题目 | 尝试 | AC | 难度 |
---|---|---|---|
2242 【深基5.习10】压缩技术(续集版) | 0 | 0 | (无) |
2243 【深基5.习11】[USACO1.2] 方块转换 Transformations | 0 | 0 | (无) |
2244 【深基6.例1】自动修正 | 0 | 0 | (无) |
2245 【深基6.例2】小书童——凯撒密码 | 0 | 0 | (无) |
2246 【深基6.例3】[NOIP2008 提高组] 笨小猴 | 0 | 0 | (无) |
- 参加人数
- 0
- 创建人