📜  C++数组

📅  最后修改于: 2020-09-25 04:45:06             🧑  作者: Mango

在本教程中,我们将学习如何使用数组。我们将借助示例学习如何在C++编程中声明,初始化和访问数组元素。

在C++中,数组是一个变量,可以存储相同类型的多个值。例如,

假设一班有27个学生,我们需要存储所有学生的成绩。无需创建27个单独的变量,我们只需创建一个数组即可:

double grade[27];

在这里, grade是一个最多可容纳27个double类型元素的数组。

在C++中,声明数组后不能更改数组的大小和类型。

C++数组声明

dataType arrayName[arraySize];

例如,

int x[6];

这里,

C++数组中的访问元素

在C++中,数组中的每个元素都与一个数字关联。该数字称为数组索引。我们可以使用这些索引来访问数组的元素。

// syntax to access array elements
array[index];

考虑上面我们看到的数组x

几件事要记住:

C++数组初始化

在C++中,可以在声明期间初始化数组。例如,

// declare and initialize and array
int x[6] = {19, 10, 8, 17, 9, 15};

在声明期间初始化数组的另一种方法:

// declare and initialize an array
int x[] = {19, 10, 8, 17, 9, 15};

在这里,我们没有提到数组的大小。在这种情况下,编译器会自动计算大小。

空成员的C++数组

在C++中,如果数组的大小为n ,则我们最多可以在数组中存储n个元素。但是,如果我们存储少于n个元素,将会发生什么。

例如,

// store only 3 elements in the array
int x[6] = {19, 10, 8};

在此,数组x的大小为6 。但是,我们仅用3个元素对其进行了初始化。

在这种情况下,编译器会为其余位置分配随机值。通常,此随机值只是0

如何插入和打印数组元素?

int mark[5] = {19, 10, 8, 17, 9}

// change 4th element to 9
mark[3] = 9;

// take input from the user
// store the value at third position
cin >> mark[2];


// take input from the user
// insert at ith position
cin >> mark[i-1];

// print first element of the array
cout << mark[0];

// print ith element of the array
cout >> mark[i-1];

示例1:显示数组元素

#include 
using namespace std;

int main() {
    int numbers[5] = {7, 5, 6, 12, 35};

    cout << "The numbers are: ";

    //  Printing array elements
    // using range based for loop
    for (const int &n : numbers) {
        cout << n << "  ";
    }


    cout << "\nThe numbers are: ";

    //  Printing array elements
    // using traditional for loop
    for (int i = 0; i < 5; ++i) {
        cout << numbers[i] << "  ";
    }

    return 0;
}

输出

The numbers are: 7  5  6  12  35
The numbers are: 7  5  6  12  35

在这里,我们使用了for循环从i = 0迭代到i = 4 。在每次迭代中,我们都打印了numbers[i]

我们再次使用基于范围的for循环来打印出数组的元素。要了解有关此循环的更多信息,请选中C++ Ranged for Loop。

注意:在基于范围的循环中,我们使用了代码const int &n而不是int n作为范围声明。但是,最好使用const int &n因为:

  1. 使用int n只需在每次迭代期间将数组元素复制到变量n中。这不是高效的内存。

    但是, &n使用数组元素的内存地址来访问其数据,而无需将其复制到新变量中。这样可以节省内存。

  2. 我们只是在打印数组元素,而不修改它们。因此,我们使用const以免意外更改数组的值。

示例2:从用户那里获取输入并将其存储在数组中

#include 
using namespace std;

int main() {
    int numbers[5];

    cout << "Enter 5 numbers: " << endl;

    //  store input from user to array
    for (int i = 0; i < 5; ++i) {
        cin >> numbers[i];
    }

    cout << "The numbers are: ";

    //  print array elements
    for (int n = 0; n < 5; ++n) {
        cout << numbers[n] << "  ";
    }

    return 0;
}

输出

Enter 5 numbers: 
11
12
13
14
15
The numbers are: 11  12  13  14  15

再一次,我们使用了for循环从i = 0迭代到i = 4 。在每次迭代中,我们从用户那里获取输入并将其存储在numbers[i]

然后,我们使用了另一个for循环来打印所有数组元素。

示例3:使用for循环显示数组元素的总和和平均值

#include 
using namespace std;

int main() {
    
    // initialize an array without specifying size
    double numbers[] = {7, 5, 6, 12, 35, 27};

    double sum = 0;
    double count = 0;
    double average;

    cout << "The numbers are: ";

    //  print array elements
    // use of range-based for loop
    for (const double &n : numbers) {
        cout << n << "  ";

        //  calculate the sum
        sum += n;

        // count the no. of array elements
        ++count;
    }

    // print the sum
    cout << "\nTheir Sum = " << sum << endl;

    // find the average
    average = sum / count;
    cout << "Their Average = " << average << endl;

    return 0;
}

输出

The numbers are: 7  5  6  12  35  27
Their Sum = 92
Their Average = 15.3333

在此程序中:

注意:我们使用了有范围的for循环,而不是普通的for循环。

普通的for循环要求我们指定迭代次数,该次数由数组的大小指定。

但是,有范围的for循环不需要这样的规范。

C++数组越界

如果我们声明一个大小为10的数组,则该数组将包含索引从0到9的元素。

但是,如果尝试访问索引为10或大于10的元素,则将导致未定义的行为。