C++ ——数组介绍和实例


C++ ——数组
C++ 中的“数组”是一种基本的数据结构,它代表了一段连续的内存区域,用于存储固定数量的相同类型的数据元素。下面对C++中的数组进行全面介绍:

定义数组

定义数组的基本语法如下:

数据类型 名称[大小];

其中:

  • 数据类型:指明数组中每个元素的类型,可以是任何C++内置类型(如 intfloatchar)或用户自定义类型(如结构体、类)。
  • 名称:为数组赋予一个唯一的标识符,用于在程序中引用该数组。
  • 大小:是一个非负整数常量表达式,表示数组中元素的数目。注意,数组大小在编译时就必须确定,不能动态改变。

例如,定义一个包含5个整数的数组:

int numbers[5];

这表示创建了一个名为 numbers 的数组,能够存储5个 int 类型的值。

初始化数组

数组可以在定义时直接初始化,通过在大括号 {} 内列出初始值,按照从左到右的顺序依次赋给数组元素。如果初始值数量小于数组大小,剩余元素将被默认初始化(通常是整型为0,浮点型为0.0,对象类型为构造函数的默认值)。例如:

int scores[5] = {100, 95, 98, 85, 80};

或者,如果初始值数量与数组大小相同,可以省略数组大小:

int scores[] = {100, 95, 98, 85, 80}; // 编译器自动推断出数组大小为5

也可以使用花括号列表的初始化形式来初始化所有元素为同一值:

int emptyArray[10] = {0}; // 所有元素都初始化为0

访问数组元素

数组元素通过索引来访问,索引是从0开始的整数。访问数组元素的语法是:

数组名[索引]

合法的索引范围是 0数组大小 - 1。例如,访问 numbers 数组的第一个和最后一个元素:

int firstElement = numbers[0]; // 获取第一个元素
int lastElement = numbers[4]; // 获取最后一个元素

访问越界元素会导致未定义行为,这是C++编程中的常见错误源。

一维数组与多维数组

C++ 支持一维数组(线性数组)、二维数组(表格状数组)乃至更高维度的数组。二维数组可以看作是数组的数组,其定义语法如下:

数据类型 名称[行数][列数];

例如,定义一个3行4列的整数矩阵:

int matrix[3][4];

访问二维数组元素时需要提供两个索引,分别对应行和列:

matrix[row][column];

数组与指针

数组名被视为指向其首元素的常量指针。因此,可以使用指针运算来遍历数组:

for (int i = 0; i < 5; ++i) {
    cout << numbers[i] << ' ';
}

// 或者使用指针
int *p = numbers;
for (int i = 0; i < 5; ++i, ++p) {
    cout << *p << ' ';
}

数组的局限性

尽管数组在简单数据存储和快速随机访问上很有用,但它们有一些固有的局限性:

  • 固定大小:一旦数组创建,其大小就不能改变。如果需要动态调整容量,通常需要使用 std::vector 这样的容器类。
  • 内存连续性要求:对于大数据集或复杂数据结构,连续内存分配可能变得困难,且可能导致内存碎片。
  • 没有内置边界检查:访问越界不会引发运行时错误,而是导致未定义行为,这在调试时可能难以察觉。

现代C++中的替代方案

在现代C++编程中,虽然数组仍然是基础数据结构,但为了克服其局限性并利用标准库提供的便利,通常推荐使用标准模板库(STL)中的容器,如 std::vectorstd::arraystd::deque。这些容器提供了动态大小调整、边界检查、迭代器支持、算法集成等更高级的功能,增强了代码的健壮性和可维护性。

总结来说,C++ 中的数组是一种基础而高效的存储多个同类型数据的方式,理解其定义、初始化、访问方法以及局限性对于编写和调试C++程序至关重要。在实际项目中,应根据具体需求权衡使用原生数组还是更高级的容器类。

以下是一个C++程序实例,演示了如何定义、初始化、访问一维数组以及使用循环遍历数组:

#include <iostream>

int main() {
    // 定义并初始化一个包含5个整数的数组
    int grades[5] = {85, 92, 76, 9¾, 88};

    // 访问并输出数组中的特定元素
    std::cout << "First grade: " << grades[0] << std::endl;
    std::cout << "Last grade: " << grades[4] << std::endl;

    // 使用循环遍历并输出整个数组
    std::cout << "All grades:" << std::endl;
    for (size_t i = 0; i < 5; ++i) {
        std::cout << "Grade " << (i + 1) << ": " << grades[i] << std::endl;
    }

    return 0;
}

在这个示例中:

  1. 首先包含了 <iostream> 头文件,以便使用 std::cout 进行输出。

  2. 定义了一个名为 grades 的一维数组,类型为 int,大小为5。同时使用初始化列表 {85, 92, 76, 9¾, 88} 对数组进行了初始化,每个值对应数组的一个元素。

  3. 使用 grades[0]grades[4] 分别访问并输出数组的第一个(索引为0)和最后一个(索引为4)元素。

  4. 使用 for 循环遍历数组。循环变量 i 从0开始,每次递增1,直到达到数组大小(5)。在每次循环中,通过 grades[i] 访问当前索引处的元素,并将其值输出。同时输出了当前元素对应的索引位置(i + 1),使得输出结果更易读。

编译并运行上述程序,将得到类似以下的输出:

First grade: 85
Last grade: 88
All grades:
Grade 1: 85
Grade 2: 92
Grade 3: 76
Grade 4: 9¾
Grade 5: 88

这个实例展示了C++中数组的基本操作,包括定义、初始化、访问以及遍历。在实际编程中,可以根据需要对数组进行更复杂的操作,如排序、查找、统计等。

python推荐学习汇总连接:
50个开发必备的Python经典脚本(1-10)

50个开发必备的Python经典脚本(11-20)

50个开发必备的Python经典脚本(21-30)

50个开发必备的Python经典脚本(31-40)

50个开发必备的Python经典脚本(41-50)
————————————————

​最后我们放松一下眼睛
在这里插入图片描述

  • 17
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极致人生-010

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值