C++ bài học về mảng

Trong hướng dẫn này, chúng ta sẽ học cách làm việc với mảng. Chúng ta sẽ học cách khai báo, khởi tạo và truy cập các phần tử mảng trong lập trình C ++ với sự trợ giúp của các ví dụ.

Trong C ++, mảng là một biến có thể lưu trữ nhiều giá trị cùng kiểu. Ví dụ,

Giả sử một lớp học có 27 sinh viên, và chúng ta cần lưu trữ điểm của tất cả họ. Thay vì tạo 27 biến riêng biệt, chúng ta có thể chỉ cần tạo một mảng:

double grade[27];

Ở đây, lớp là một mảng có thể chứa tối đa 27 phần tử của doublekiểu.

Trong C ++, kích thước và kiểu mảng không thể thay đổi sau khi khai báo.

Khai báo mảng C ++

dataType arrayName[arraySize];

Ví dụ,

int x[6];

Đây,

  • int – type of element to be stored
  • x – name of the array
  • 6 – size of the array

Truy cập các phần tử trong Mảng C ++

Trong C ++, mỗi phần tử trong một mảng được liên kết với một số. Số được gọi là chỉ số mảng. Chúng ta có thể truy cập các phần tử của một mảng bằng cách sử dụng các chỉ số đó.

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

Hãy xem xét mảng x mà chúng ta đã thấy ở trên.Các phần tử của một mảng trong C ++

Vài điều cần nhớ:

  • The array indices start with 0. Meaning x[0] is the first element stored at index 0.
  • If the size of an array is n, the last element is stored at index (n-1). In this example, x[5] is the last element.
  • Elements of an array have consecutive addresses. For example, suppose the starting address of x[0] is 2120d. Then, the address of the next element x[1] will be 2124d, the address of x[2] will be 2128d and so on.

    Here, the size of each element is increased by 4. This is because the size of int is 4 bytes.

Khởi tạo mảng C ++

Trong C ++, có thể khởi tạo một mảng trong khi khai báo. Ví dụ,

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

Các phần tử của mảng trong C ++ và dữ liệu của chúng

Một phương thức khác để khởi tạo mảng trong khi khai báo:

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

Ở đây, chúng tôi chưa đề cập đến kích thước của mảng. Trong những trường hợp như vậy, trình biên dịch sẽ tự động tính toán kích thước.

Mảng C++ với các thành viên trống

Trong C ++, nếu một mảng có kích thước n, chúng ta có thể lưu trữ tối đa n phần tử trong mảng. Tuy nhiên, điều gì sẽ xảy ra nếu chúng ta lưu trữ ít hơn n số phần tử.

Ví dụ,

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

Ở đây, mảng x có kích thước là 6. Tuy nhiên, chúng tôi đã khởi tạo nó chỉ với 3 phần tử.

Trong những trường hợp như vậy, trình biên dịch sẽ gán các giá trị ngẫu nhiên cho những nơi còn lại. Thông thường, giá trị ngẫu nhiên này chỉ đơn giản là 0.Các thành viên mảng trống được tự động gán giá trị 0

Làm thế nào để chèn và in các phần tử của mảng?

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];

Ví dụ 1: Hiển thị các phần tử mảng

#include <iostream>
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;
}

Đầu ra

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

Ở đây, chúng tôi đã sử dụng một forvòng lặp để lặp lại từ i = 0đến i = 4. Trong mỗi lần lặp, chúng tôi đã in numbers[i].

Chúng tôi lại sử dụng một dải ô dựa trên vòng lặp for để in ra các phần tử của mảng. Để tìm hiểu thêm về vòng lặp này, hãy kiểm tra C ++ Ranged for Loop .

Lưu ý: Trong vòng lặp dựa trên phạm vi của chúng tôi, chúng tôi đã sử dụng mã const int &nthay vì int nkhai báo phạm vi. Tuy nhiên, cái const int &nđược ưu tiên hơn vì:

  1. Sử dụng int nchỉ cần sao chép các phần tử mảng vào biến n trong mỗi lần lặp. Điều này không hiệu quả về bộ nhớ.

    & n , tuy nhiên, sử dụng địa chỉ bộ nhớ của các phần tử mảng để truy cập dữ liệu của chúng mà không cần sao chép chúng vào một biến mới. Điều này là hiệu quả về bộ nhớ.
  2. Chúng tôi chỉ đơn giản là in các phần tử của mảng, không sửa đổi chúng. Do đó, chúng ta sử dụng constđể không vô tình thay đổi các giá trị của mảng.

Ví dụ 2: Lấy đầu vào từ người dùng và lưu trữ họ trong một mảng

#include <iostream>
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;
}

Đầu ra

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

Một lần nữa, chúng tôi đã sử dụng một forvòng lặp để lặp lại từ i = 0đến i = 4. Trong mỗi lần lặp, chúng tôi lấy một đầu vào từ người dùng và lưu trữ nó trong đó numbers[i].

Sau đó, chúng tôi sử dụng một forvòng lặp khác để in tất cả các phần tử của mảng.

Ví dụ 3: Hiển thị tổng và trung bình của các phần tử mảng sử dụng cho vòng lặp

#include <iostream>
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;
}

Đầu ra

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

Trong chương trình này:

  1. Chúng tôi đã khởi tạo một mảng kép có tên là các số nhưng không chỉ định kích thước của nó. Chúng tôi cũng khai báo ba biến kép tổng , đếm và trung bình .

    Đây, sum =0và count = 0.
  2. Sau đó, chúng tôi sử dụng một forvòng lặp dựa trên phạm vi để in các phần tử của mảng. Trong mỗi lần lặp của vòng lặp, chúng ta thêm phần tử mảng hiện tại vào tính tổng .
  3. Chúng tôi cũng làm tăng giá trị của count bởi 1trong mỗi lần lặp, để chúng ta có thể nhận được kích thước của mảng vào cuối của vòng lặp for.
  4. Sau khi in tất cả các phần tử, chúng ta in ra tổng và trung bình cộng của tất cả các số. Giá trị trung bình của các số được cho bởiaverage = sum / count;

Lưu ý: Chúng tôi đã sử dụng một forvòng lặp tầm xa thay vì một forvòng lặp bình thường .

Một forvòng lặp thông thường yêu cầu chúng ta chỉ định số lần lặp, được cung cấp bởi kích thước của mảng.

Nhưng một forvòng lặp tầm xa không yêu cầu các thông số kỹ thuật như vậy.

C ++ Mảng ngoài ranh giới

Nếu chúng ta khai báo một mảng có kích thước là 10, thì mảng sẽ chứa các phần tử từ chỉ số 0 đến 9.

Tuy nhiên, nếu chúng tôi cố gắng truy cập phần tử ở chỉ số 10 hoặc hơn 10, nó sẽ dẫn đến Hành vi không xác định.









Gõ tìm kiếm nhanh...