当前位置: 首页 > article >正文

C++数据结构之数组(详解)

1.介绍

        在C++中,数组是一种基本的数据结构,用于存储相同类型的元素的集合。数组的元素在内存中是连续存储的,可以通过索引访问。下面将详细介绍C++数组的相关内容。

2.数组的定义

        数组的定义需要指定元素的类型和数组的大小。

type arrayName[arraySize];

        type:数组元素的类型(如 int、char)等。

        arrayName:数组的名称。

        arraySize:数组的大小(必须是常量表达式)。

        示例:

int arr[5]; // 定义一个包含 5 个整数的数组
3.数组的初始化

        数组可以在定义时初始化,也可以后续赋值。

        (1)定义时初始化

int arr[5] = {1, 2, 3, 4, 5}; // 初始化数组

        (2)部分初始化

int arr[5] = {1, 2}; // 前两个元素初始化为 1 和 2,其余为 0

        (3)自动推断大小

int arr[] = {1, 2, 3, 4, 5}; // 数组大小自动推断为 5
4.访问数组元素

        数组通过索引访问,索引从0开始。

int arr[5] = {10, 20, 30, 40, 50};
std::cout << arr[0]; // 输出 10
std::cout << arr[2]; // 输出 30
5.数组的遍历

        可以使用循环遍历数组。

for (int i = 0; i < 5; i++) {
    std::cout << arr[i] << " ";
}

//范围for循环(C++11及以上)
for (int num : arr) {
    std::cout << num << " ";
}
6.数组的大小

        可以使用sizeof运算符计算数组的大小或元素个数。

int arr[5] = {1, 2, 3, 4, 5};
std::cout << "数组大小(字节数): " << sizeof(arr) << std::endl; // 输出 20(5 * 4)
std::cout << "数组元素个数: " << sizeof(arr) / sizeof(arr[0]) << std::endl; // 输出 5
7.多维数组

C++支持多维数组(如二维数组,三维数组等)。

int arr[3][4] = {
    {1, 2, 3, 4},
    {5, 6, 7, 8},
    {9, 10, 11, 12}
};

std::cout << arr[1][2]; // 输出 7
8.数组的局限性

        局限性:数组的大小必须在定义时确定,且不能动态调整。

        越界访问:访问数组时如果索引超出范围,会导致未定义行为。

        不支持动态扩展:数组的大小不能动态扩展或缩小。

9.数组与指针

        数组名是一个指向数组首地址的指针。

int arr[5] = {1, 2, 3, 4, 5};
int* ptr = arr; // ptr 指向数组的第一个元素
std::cout << *ptr; // 输出 1
std::cout << *(ptr + 2); // 输出 3
10.数组作为函数参数

        数组可以作为函数参数传递,但会退化为指针。

void printArray(int arr[], int size) {
    for (int i = 0; i < size; i++) {
        std::cout << arr[i] << " ";
    }
}

int main() {
    int arr[5] = {1, 2, 3, 4, 5};
    printArray(arr, 5); // 输出 1 2 3 4 5
    return 0;
}
11.动态数组

        如果需要动态调整数组的大小,可以使用vector(动态数组)。

#include <vector>

std::vector<int> vec = {1, 2, 3};
vec.push_back(4); // 动态扩展数组
std::cout << vec[3]; // 输出 4
12.数组的替代方案

        (1)array(C++11及以上)

                特点:固定大小的数组,提供更好的类型安全性和接口。

        示例:

#include <array>
std::array<int, 5> arr = {1, 2, 3, 4, 5};
std::cout << arr[2]; // 输出 3

        (2)vector

                特点:动态大小的数组,支持自动扩展和收缩。

        示例:

#include <vector>
std::vector<int> vec = {1, 2, 3};
vec.push_back(4); // 动态扩展
std::cout << vec[3]; // 输出 4
13.总结

        数组作为C++中最基本的数据结构之一,适合存储固定大小的元素集合。对于更灵活的需求,推荐使用vector和array。

如有错误,敬请指正!!!


http://www.kler.cn/a/569047.html

相关文章:

  • SpringMVC学习(初识与复习Web程序的工作流程)(1)
  • 浅谈Linux中的软件包管理器——基于ubuntu环境
  • C++二分图
  • 鸿蒙(OpenHarmony/HarmonyOS)开发中常用的命令行工具及操作大全
  • 基于大数据的民宿旅馆消费数据分析系统
  • 0.2S级高精度物联网电能表技术参数介绍
  • 【每日学点HarmonyOS Next知识】全局调整字体、h5选择框无法取消选中、margin不生效、Length转换为具体值、Prop和link比较
  • react脚手架配置别名
  • [数据结构] - - - 链表
  • SpringBoot 端口配置
  • DeepSeek、Grok与ChatGPT:AI三巨头的技术博弈与场景革命
  • 存储对象(MySQL笔记第五期)
  • 【PromptCoder】使用 package.json 生成 cursorrules
  • Ubuntu中dpkg命令和apt命令的关系与区别
  • 医脉云枢:中医药典籍知识图谱与非遗传承多维可视化系统
  • 本地部署大语言模型-DeepSeek
  • 0x01 html和css
  • 华为OD-2024年E卷-分批萨[100分]
  • 跟单系统风控模块
  • [Computer Vision]实验六:视差估计