一维数组是最简单的线性数据结构,由相同数据类型的元素构成,通过连续内存地址存储数据。每个元素通过从`0`开始的整数索引进行访问。

登录以参加训练计划

声明语法

// 静态数组(编译时确定大小)
数据类型 数组名[数组长度]; 

// 动态数组(运行时确定大小)
数据类型* 数组名 = new 数据类型[数组长度];

核心特性

  1. 固定长度 - 静态数组长度声明后不可修改
  2. 连续存储 - 元素在内存中顺序存放
  3. 随机访问 - 通过索引直接访问任意元素(时间复杂度O(1))
  4. 类型一致 - 所有元素必须为相同数据类型

初始化方式

// 声明时初始化(静态)
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[] 数组名;

注意事项

  1. 数组越界访问会导致未定义行为
  2. 数组名表示首元素地址(指针常量)
  3. 数组长度计算:sizeof(arr)/sizeof(arr[0])(仅适用于静态数组)
  4. 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;
}

典型应用场景

  • 存储有限个同类型数据
  • 实现其他数据结构的基础(栈、队列等)
  • 需要快速随机访问的集合数据
  • 缓冲区处理(音频、视频流)

章节 1. 白银

开放

题目 尝试 AC 难度
2227   【深基5.例4】[NOIP2005 普及组] 校门外的树 0 0 (无)
2228   【深基5.例5】旗鼓相当的对手 0 0 (无)
2229   【深基5.例7】工艺品制作 0 0 (无)
2230   【深基5.例8】[AHOI2001] 彩票摇奖 0 0 (无)
2231   【深基5.例9】[NOIP2015 提高组] 神奇的幻方 0 0 (无)
 
参加人数
0
创建人