c++如何定义数组

等等,还记得上次你写代码时因为数组越界而差点崩溃的情况吗?深夜,办公室里只有我一个人,屏幕上的蓝光反射着咖啡渍。
我尝试快速调试,但越界访问弄乱了内存。
最终,我不得不重装系统来修复它。

数组看似简单,但细节却非常多。
例如,char letter[] = {'a', 'b', 'c'};在这行代码中,编译器自动推断大小为3 ,但如果写成 char letter[5 ] = {'a', 'b', 'c'},则第4 个和第5 个元素是未定义的,可能是随机的。

我有一个习惯,定义数组的时候总是在注释里写 // 注意下标是从0开始的,比如 int Scores[5 ] = {0}; // Scores[0] 放在第一位,以免下次造成混乱。

我突然想到C++中其实有一种std::array类型,它有固定的大小,但比原生数组有更多现代的功能。
例如,您可以使用 at() 方法作为 std::vector 来避免越界值。
不过好像用的人不多。
大家还是习惯向量或者直接使用原生数组。

顺便问一下,为什么没有人使用 std::array ?是他太老了,还是他真的没用了?

数组是一种数据类型

说起数组,他们是编程中的老朋友了。
我记得刚开始的时候,我对数组又爱又恨。
它就像一个仓库,将相同类型的物品分组在一起,以便于管理和搜索。

让我们回到数组的特性。
这东西的长度是固定的,就像一排排架子一样,不能随意增减。
元素类型也必须相同;你不能混合苹果和橙子。
然而,它的优点是您可以使用索引快速找到商品,就像您在超市寻找产品一样。

定义数组有两种方法:一种是使用“数据类型数组名[]”,另一种是使用“数据类型数组名[]”。
它们其实很相似,顺序不同,但意思是一样的。

定义数组后,不要忘记初始化它,否则它看起来就像一个空盒子,里面什么也没有。
初始化有两种类型:动态和静态。
动态初始化就像说“我需要一个可以装3 个苹果的盒子”,然后系统会帮你准备一个可以装3 个苹果的盒子。
静态初始化就像将苹果直接放入盒子中。
系统将根据您放入的苹果数量确定盒子的大小。

使用数组时需要考虑几个常见问题。
比如说,如果数组索引越界了,比如你要找的第1 00个架子,但实际上只有9 9 个,那么自然你就找不到任何东西了。
还有一个空指针异常,例如,如果您想打开一个空字段并在不打开它的情况下使用其内容,自然会出现问题。

要找出数组的大小,可以使用“数组名称.长度”来获取长度。
请记住,索引从 0 开始,因此最后一个元素的索引是“数组名称.length-1 ”。

对于二维数组来说,它就像一个架子上的一个架子,可以容纳一排排的盒子。
定义时可以指定行数和列数,也可以直接放置元素。

总之,如果使用得当,数组是非常有效的,但是如果使用不当,很容易出现问题。
你必须彻底研究它才能让它为你所用。

定义数组是什么呢?

2 02 3 年,朋友第一次接触数组,就问我这个。
我说过,数组就是连续存储的一系列相同类型的数据,比如[0]到[n-1 ]。
他说这就像一个盒子,可以容纳许多相同的东西。
我点点头,是的,就像你说的,一切都有它自己的位置,我们称之为低。

然后他问我矩阵怎么定义?我说,首先你要告诉计算机你想要什么类型的数组,比如int、float,然后给它起一个名字,比如array。
接下来,您必须告诉它您想要多少个项目,用方括号中的数字表示。
这是数组的长度。

他听得很仔细,我补充说,定义数组时,长度要用方括号括起来,就像数组int[1 0]一样。
这样计算机就知道您要创建一个包含 1 0 个整数的数组。
他会意地点点头,我补充说,定义数组后,可以通过下标访问每个元素,就像array[0]是第一个元素一样。

问如果我想定义一个包含1 00个元素的整型数组怎么办?我说,那就输入int myArray[1 00]。
他眼睛一亮,道:“原来这么简单。
”我笑着告诉他,可以,但是记住矩阵下标是从0开始的。
他点点头说,我明白了。
我的朋友终于开始理解数组的定义了。