C++ 数组学习资料

C++ 数组学习资料

目录

什么是数组?

在 C++ 中,数组是一种用于存储相同类型元素的数据结构。它是一个固定大小的连续内存块,每个元素都可以通过索引访问。

声明和初始化数组

要声明一个数组,需要指定元素类型和数组的大小。以下是一些声明和初始化数组的示例:

cpp 复制代码
// 声明一个整数数组
int numbers[5];

// 声明并初始化一个字符数组
char name[10] = "John";

// 使用初始化列表初始化数组
int values[] = {1, 2, 3, 4, 5};

访问数组元素

可以使用索引操作符 [] 来访问数组中的元素。数组的索引从 0 开始,最后一个元素的索引是数组大小减一。

以下是访问数组元素的示例:

cpp 复制代码
int numbers[] = {10, 20, 30, 40, 50};

// 访问数组中的第一个元素
int firstElement = numbers[0];

// 访问数组中的第三个元素
int thirdElement = numbers[2];

// 修改数组中的第四个元素
numbers[3] = 60;

多维数组

除了一维数组,C++ 还支持多维数组。多维数组是由多个数组嵌套而成的数组。

以下是声明和访问二维数组的示例:

cpp 复制代码
// 声明一个 2x3 的整数数组
int matrix[2][3] = {
    {1, 2, 3},
    {4, 5, 6}
};

// 访问二维数组中的元素
int element = matrix[1][2]; // 访问第二行第三列的元素

数组和指针

数组名实际上是一个指向数组第一个元素的指针。可以使用指针算术和指针操作符来操作数组。

以下是一些与数组和指针相关的示例:

cpp 复制代码
int numbers[] = {1, 2, 3, 4, 5};

// 使用指针访问数组中的元素
int firstElement = *numbers; // 等同于 numbers[0]

// 使用指针算术访问数组中的元素
int thirdElement = *(numbers + 2); // 等同于 numbers[2]

常见的数组操作

除了访问数组元素,C++ 还提供了一些常见的数组操作,如计算数组长度、遍历数组等。

以下是一些常见的数组操作示例:

cpp 复制代码
int numbers[] = {1, 2, 3, 4, 5};

// 计算数组的长度
int length = sizeof(numbers) / sizeof(numbers[0]);

// 遍历数组并打印元素
for (int i = 0; i < length; i++) {
    cout << numbers[i] << " ";
}

数组的限制和注意事项

在使用数组时,需要注意以下限制和注意事项:

  • 数组的大小必须在编译时确定,无法在运行时改变。

  • 数组越界访问会导致未定义的行为,应确保不超出数组的有效索引范围。

  • 使用循环遍历数组时,注意循环变量的范围。

  • 数组作为函数参数传递时,会截断了文本。以下是续写的部分:

  • 数组作为函数参数传递时,会退化为指针,失去了长度信息。可以传递数组长度作为额外参数来解决这个问题。

这些是 C++ 数组的基本知识和常见操作。通过深入学习数组,你可以更好地理解和应用它们在程序中。记得进行实践和练习,加深对数组的理解和掌握。

相关推荐
I_belong_to_jesus5 小时前
C++关于分支预测的优化1
开发语言·c++·算法
Rabitebla6 小时前
【Linux】进程控制(十二) 自定义 Shell(二):内建命令与进程工作目录管理
linux·c++·笔记·学习·bash
码客-ygluu12 小时前
一个通用游戏数据服务器
c++·架构
another heaven12 小时前
【C/C++ Ranges 是零开销抽象吗?拆开管道、惰性求值和编译期膨胀】
c语言·开发语言·c++
YLCHUP14 小时前
【思维&图论建模】题解:债权(debt)_图论_建模_思路转化_思维题目_C++算法竞赛
c++·笔记·算法·数学建模·贪心算法·深度优先·图论
xiaoye-duck14 小时前
《C++ 项目:手写大模型接入 SDK》会话模块整合:内存 SessionManager 与 DataManager 持久化联动
开发语言·数据库·c++·语言模型
思麟呀15 小时前
背包DP(01背包+完全背包)
c++·算法
旖旎夜光16 小时前
【C++ 基础入门】C++11 新特性(中):右值引用、移动语义与完美转发
开发语言·c++·笔记·学习
ShineWinsu17 小时前
对于Qt:QTabWidget常见属性的解析
开发语言·数据库·c++·qt·浏览器·qtabwidget·标签页
nice_lcj52017 小时前
LRU 缓存入门:它是什么、怎么用、面试怎么手写
java·数据结构·缓存·面试·lru