C++ 数组

C++中,数组是一种线性数据结构,用于存储一组相同类型的数据。数组在声明时需要指定类型和大小,并且数组大小在声明后不能更改。数组的元素按顺序存储在连续的内存位置,可以通过索引访问。本文主要介绍C++数组。

1、C++ 数组

数组用于将多个值存储在单个变量中,而不是为每个值声明单独的变量。

要声明数组,要使用方括号定义变量类型:

int myNum[6];

下面声明了一个包含int数组的变量。要向其中插入值,我们可以使用数组字面量,就是将值放在以逗号分隔的花括号内,例如:

int myNum[6] = {89,85,90,75,69,95};

要创建字符数组,可以编写:

char myName[10] = "cjavapy";

2、访问数组中元素

可以通过数组索引来访问数组元素。

该语句访问myNum中第一个元素的值:

例如:

#include <iostream>
using namespace std;

int main() {
    int arr[] = {10, 20, 30, 40, 50};
    cout << "第一个元素: " << arr[0] << endl;  // 输出第一个元素
    cout << "第三个元素: " << arr[2] << endl;  // 输出第三个元素
    return 0;
}

注意:数组索引以0开头:[0]是第一个元素。 [1]是第二个元素,依此类推。

3、修改数组中元素

要更改指定元素的值,可以使用数组索引来修改,

例如:

#include <iostream>
using namespace std;

int main() {
    // 声明并初始化数组
    int myNum[6] = {89, 85, 90, 75, 69, 95};

    // 输出第一个元素的初始值
    cout << "原始的第一个元素: " << myNum[0] << endl;

    // 修改第一个元素的值
    myNum[0] = 100;

    // 输出第一个元素修改后的值
    cout << "修改后的第一个元素: " << myNum[0] << endl;

    return 0;
}

4、数组长度

在C++中,要找出一个数组有多少个元素,可以通过sizeof()计算::

例如:

#include <iostream>
using namespace std;

int main() {
    int myNum[6] = {89, 85, 90, 75, 69, 95};

    // 计算数组元素个数
    int numElements = sizeof(myNum) / sizeof(myNum[0]);

    // 输出数组的元素个数
    cout << "数组myNum的元素个数为: " << numElements << endl;

    return 0;
}

5、循环遍历数组

可以使用for循环遍历数组元素,并通过数组长度来指定循环应运行的次数。

下面示例输出nums数组中的所有元素的三种方法:

1)下标法

使用普通for循环使用下标方式进行对数组中元素进行遍历,

#include <iostream>
using namespace std;
int main(){
  int nums[]={0,1,2,3,4,5,6,7,8,9};
  int i;
  for(i=0;i<=9;i++){
    cout << nums[i] << endl;
  }
  return 0;
}

2)使用范围for循环(C++11及以上)

#include <iostream>
using namespace std;

int main() {
    int arr[] = {10, 20, 30, 40, 50};  // 定义并初始化一个数组

    // 使用范围 for 循环遍历数组
    for (int element : arr) {
        cout << element << " ";  // 输出每个元素,以空格分隔
    }

    return 0;
}

2)指针遍历取值

#include <iostream>
using namespace std;

int main() {
    int nums[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    int i;

    cout << "使用指针方式输出数组元素:" << endl;
    for (i = 0; i <= 9; i++) {
        cout << *(nums + i) << endl;  // 使用指针方式访问数组元素
    }
    //对比下标方式
    cout << "\n使用下标方式输出数组元素:" << endl;
    for (i = 0; i <= 9; i++) {
        cout << nums[i] << endl;  // 使用下标方式访问数组元素
    }

    return 0;
}

3)指针变量指向数组元素

#include <iostream>
using namespace std;

int main() {
    int nums[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};  // 定义一个整数数组
    int *p;  // 声明一个指向整数的指针

    // 使用指针遍历数组
    for (p = nums; p <= (nums + 9); p++) {
        cout << *p << endl;  // 输出指针p指向的值
    }
    
    return 0;
}

7、多维数组

C++支持多维数组(通常是二维数组),用于存储矩阵或表格数据,多维数组是包含一个或多个数组的数组。

如果需要创建二维数组,需要将每个数组添加到其各自的大括号内:

例如:

int[][] myNumbers = { {1, 2, 3, 4}, {5, 6, 7} };

myNumbers现在是一个以两个数组为元素的数组。

要访问myNumbers数组的元素,请指定两个索引:一个用于数组,一个用于该数组内的元素。本示例访问myNumbers的第二个数组(索引下标为1)中的第三个元素(索引下标为2):

例如:

#include <iostream>
using namespace std;

int main() {
    // 声明并初始化一个二维数组
    int myNumbers[2][3] = { {2, 3, 4}, {5, 6, 7} };
    
    // 访问并存储指定元素的值
    int x = myNumbers[1][2];
    
    // 输出 x 的值
    cout << x << endl;  // 输出 7

    return 0;
}

也可以在通过嵌套for循环来获取二维数组的元素(需要指向两个索引下标):

例如:

#include <iostream>
using namespace std;

int main() {
    // 声明并初始化二维数组
    int myNumbers[2][3] = { {2, 3, 4}, {5, 6, 7} };
    
    // 使用嵌套循环遍历数组
    for (int i = 0; i < 2; ++i) {
        for (int j = 0; j < 3; ++j) {
            cout << "myNumbers[" << i << "][" 
            << j << "] = " << myNumbers[i][j] << endl;
        }
    }
    
    return 0;
}

推荐阅读
cjavapy编程之路首页