Mảng C ++ (Có ví dụ)

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ột 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 - loại phần tử được lưu trữ
  • x - tên của mảng
  • 6 - kích thước của mảng

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ớ:

  • Các chỉ số mảng bắt đầu bằng 0. Có nghĩa là x (0) là phần tử đầu tiên được lưu trữ tại chỉ mục 0.
  • Nếu kích thước của một mảng là n, phần tử cuối cùng được lưu trữ tại chỉ mục (n-1). Trong ví dụ này, x (5) là phần tử cuối cùng.
  • Các phần tử của một mảng có địa chỉ liên tiếp. Ví dụ: giả sử địa chỉ bắt đầu của x(0)là 2120d. Sau đó, địa chỉ của phần tử tiếp theo x(1)sẽ là 2124d, địa chỉ của x(2)sẽ là 2128d, v.v.
    Ở đây, kích thước của mỗi phần tử được tăng lên 4. Điều này là do kích thước của intlà 4 byte.

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ử 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 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(i-1);

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

 #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 << "The numbers are: "; // Printing array elements // using traditional for loop for (int i = 0; i < 5; ++i) ( cout << numbers(i) << " "; ) return 0; )

Đầu ra

 Các số là: 7 5 6 12 35 Các số là: 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 lại, 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ử 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 using namespace std; int main() ( int numbers(5); cout << "Enter 5 numbers: " << endl; // store input from user to array for (int i = 0; i > 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

Once again, we have used a for loop to iterate from i = 0 to i = 4. In each iteration, we took an input from the user and stored it in numbers(i).

Then, we used another for loop to print all the array elements.

Example 3: Display Sum and Average of Array Elements Using for Loop

 #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 << "Their Sum = " << sum << endl; // find the average average = sum / count; cout << "Their Average = " << average << endl; return 0; )

Output

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

In this program:

  1. We have initialized a double array named numbers but without specifying its size. We also declared three double variables sum, count, and average.
    Here, sum =0 and count = 0.
  2. Then we used a range based for loop to print the array elements. In each iteration of the loop, we add the current array element to sum.
  3. Chúng tôi cũng tăng giá trị của số đếm 1trong mỗi lần lặp, để chúng tôi có thể nhận được kích thước của mảng vào cuối 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.

thú vị bài viết...