C++中的数组详情 📅 2026/7/13 4:43:20 1、数组数组其实也是一种数据格式不过是一种复合类型它可以存储多个同类型的值。使用数组可以将同类型的变量整合起来管理比如说我们现在要记录三个同学的考试得分。我们当然可以写成int a1,a2,a3;看起来也不会很麻烦。但如果我们有 50 个同学呢如果有 5000 个同学呢显然就不能通过这种方式了何况每个变量都要起一个独一无二的名字这也很麻烦。使用数组就不会有这样的问题我们只需要规定数组的长度通过一个变量就可以存储任意多个值。有 5000 个同学就写成int scores[5000];就都能存下了。定义一个数组只需要三个要素变量类型、数组名、数组长度即可。1typenamearrayName[arraySize];有一点需要注意arrayName的类型不是数组而是typename数组。也就是说数组也是区分类型的这也是 C中的数组和Python中List的区别之一。2、数组的使用2.1 元素访问对于一个数组来说当我们需要访问其中的元素时可以通过下标的方式来访问。在绝大多数计算机程序当中数组的下标通常都是从 0 开始的。第一个数存在第 0 位第二个数存在第 1 位以此类推。下标通过方括号表示如1cout arrayName[0] endl;注意我们传入的下标不能大于等于数组的长度由于是从 0 开始的编译器往往不会报错只会给出一个警告但运行的过程当中可能会引发各种意想不到的问题。因为很可能你访问的内存已经超过了程序管理的范围访问到了一些操作系统内存或者是其他禁止访问的内存引起难以想象的后果。12inta[3];cout a[10] endl;在上面的例子当中我们声明了一个长度为 3 的数组但是访问了下标 10。这显然超出了数组的范围但是当我们编译的时候编译器并不会报错只会抛出一个警告。要知道程序员往往是看不见警告的。如果一不小心就会错过这个信息导致潜在的风险。所以在访问之前一定要切记确保下标在数组的范围内。2.2 初始化数组和其他变量一样也可以在声明的时候进行初始化。最常见的方式是将它的每一个元素的值写出来1inta[3] {0, 1, 2};编译器会将花括号当中的元素一个一个地填到数组对应的位置当中花括号当中的元素数量并不一定需要和数组长度相等如果小于数组长度那么就会初始化对应数量的元素。1inta[3] {0, 1};那么数组 a 的前两位会被初始化成 0 和 1其他的位置会被初始化为0。如果想要将数组当中所有元素都初始化成 0则比较特殊我们只需要写一个 0 即可。1inta[100] {0};但只有初始化成 0 的时候可以这么操作如果传入其他值则不会生效。还有一种初始化方式是我们不填数组的长度而通过初始化的方式让编译器替我们去算1inta[] {0, 1, 2, 3, 4};编译器通过执行初始化知道 a 数组的长度为 5不过C primer强烈建议我们不用这么干。因为我们人工数出来的结果可能和编译器不一样我们会犯错增加我们debug的难度。