Cùng tìm hiểu về mảng chuỗi 2 chiều trong C++. Bạn sẽ biết mảng chuỗi 2 chiều là gì, cách khởi tạo và khai báo mảng chuỗi 2 chiều, cũng như cách truy cập phần tử trong mảng chuỗi 2 chiều sau bài học này.
Mảng chuỗi 2 chiều trong C++ là gì
Mảng chuỗi 2 chiều trong C++, hay còn gọi là mảng ký tự 2 chiều trong C++ hoặc là mảng char 2 chiều trong C++, là loại mảng 2 chiều với các phần tử của mảng đều có chung kiểu char, và được sử dụng để lưu giữ nhiều chuỗi ký tự cùng lúc trong cùng một mảng.
- Kiểu char ở đây là kiểu dữ liệu có kích thước nhỏ nhất trong C++, được biểu diễn bởi các ký tự với kích thước là 1 byte. Xem thêm tại Kiểu dữ liệu trong C++.
Trong bài Chuỗi trong C++ là gì chúng ta đã biết chuỗi ký tự trong C++ thực chất là 1 mảng 1 chiều chứa các ký tự thuộc kiểu char. Điều đó có nghĩa, 1 mảng 1 chiều chỉ có thể chứa tối đa 1 chuỗi ký tự duy nhất trong nó mà thôi.
Trong trường hợp cần lưu giữ nhiều chuỗi ký tự trong 1 mảng, thay vì sử dụng mảng 1 chiều thì chúng ta sẽ sử dụng tới mảng chuỗi 2 chiều trong C++ để lưu giữ cùng lúc nhiều chuỗi ký tự trong cùng một mảng.
Ví dụ, 1 chuỗi ký tự trong C++ được lưu giữ vào biến dưới dạng mảng chuỗi 1 chiều như sau:
char s[] = "ABC"; |
Lưu ý là chuỗi ký tự luôn được kết thúc bởi ký tự \0
, nên trong chuỗi trên có 3 ký tự, cộng thêm cả ký tự kết thúc chuỗi \0
nữa nên độ dài (số ký tự) trong chuỗi sẽ là 4, chứ không phải là 3 nhé.
Trong trường hợp chúng ta cần lưu giữ nhiều chuỗi ký tự như trên trong cùng 1 biến, thay vì sử dụng mảng chuỗi 1 chiều thì chúng ta sẽ sử dụng mảng 2 chiều. Do mỗi mảng 1 chiều sẽ biểu diễn 1 chuỗi ký tự, nên khi đặt các mảng 1 chiều này vào trong một mảng chuỗi 2 chiều, chúng ta sẽ chỉ cần 1 mảng chuỗi 2 chiều duy nhất để biểu diễn toàn bộ các chuỗi mà thôi.
Ví dụ cụ thể:
|
Kết quả:
ABC |
Và mảng chuỗi 2 chiều trên được biểu diễn dưới dạng bảng như sau:
Khai báo mảng chuỗi 2 chiều trong C++
Cách khai báo và khởi tạo mảng chuỗi 2 chiều trong C++ cũng tương tự như với mảng 2 chiều căn bản mà Kiyoshi đã trình bày trong bài Mảng 2 chiều trong C++. Chúng ta viết tên kiểu, tên biến, sau đó là kích thước biến, và các giá trị sau đó trong cặp dấu ngoặc nhọn, với cú pháp sau đây:
Cú pháp khai báo mảng chuỗi 2 chiều trong C++ như sau:
char name[y][x]
;
Trong đó char
là kiểu char, name
là tên mảng chuỗi 2 chiều, y
là số lượng chuỗi ký tự trong mảng, và x
là độ dài (số ký tự) của các chuỗi ký tự đó.
Ví dụ cụ thể về cách khai báo mảng chuỗi 2 chiều trong C++:
// Mảng chuỗi 2 chiều gồm 5 chuỗi ký tự, mỗi chuỗi ký tự gồm 3 ký tự |
Khởi tạo mảng chuỗi 2 chiều trong C++
Ngoài cách khai báo thì chúng ta cũng có thể khởi tạo mảng chuỗi 2 chiều và gán các giá trị ban đầu vào mảng.
Có 2 cách để khởi tạo mảng chuỗi 2 chiều trong C++, một là cách thông dụng nhất với cú pháp sau đây:
char name[y][x]
= {"string1"
, "string2"
, "string3"
, ...
};
Trong đó, các string
đặt giữa cặp dấu nháy kép ""
chính là các chuỗi ký tự trong mảng chuỗi 2 chiều.
Ví dụ cụ thể:
char s1[5][4] = {"ABC", "DE", "FGH", "abc", "xyz"}; |
Lưu ý, khi khai báo mảng chuỗi chúng ta không thể lược bỏ giá trị y, nhưng khi khởi tạo mảng chuỗi, do chương trình sẽ tự động xác định số chuỗi ký tự có trong mảng, nên đối số y
cũng có thể được lược bỏ. Tuy nhiên đối số x
thì phải bắt buộc chỉ định, và chúng ta có thể khởi tạo mảng chuỗi 2 chiều như sau:
char s1[][4] = {"ABC", "DE", "FGH", "abc", "xyz"}; |
Ngoài cách trên, chúng ta cũng còn một cách nữa để khởi tạo mảng chuỗi 2 chiều trong C++. Ở trong bài Chuỗi trong C++ là gì chúng ta đã biết có 2 cách để biểu diễn một chuỗi trong C++, ví dụ chuỗi “ABC” ngoài cách viết các ký tự vào giữa cặp dấu nháy kép, thì còn có thể được biểu diễn như sau:
char s[] = { 'A', 'B', 'C', '\0' }; |
Sử dụng cách viết này, chúng ta có thể khởi tạo mảng chuỗi 2 chiều bằng cách đặt ký tự kết thúc chuỗi vào cuối từng chuỗi như sau:
|
Kết quả:
AB |
Truy cập phần tử trong mảng chuỗi 2 chiều
Khác với mảng 2 chiều chứa các số cần tới một cặp index để xác định vị trí các phần tử, thì trong mảng chuỗi 2 chiều, chúng ta chỉ cần một index duy nhất để xác định vị trí của một chuỗi ký tự trong mảng chuỗi 2 chiều.
Ví dụ cụ thể, chúng ta in mảng chuỗi 2 chiều trong C++ như sau:
|
Kết quả:
fruits[0]= Apple |
Lại nữa, ngoài truy cập tới các chuỗi ký tự thì chúng ta cũng có thể truy cập tới từng ký tự có trong các chuỗi ký tự đó. Khi đó chúng ta mới cần thêm index thứ 2 biểu thị vị trí của ký tự cần tìm trong chuỗi ký tự mà thôi.
Ví dụ, chúng ta in ra màn hình ký tự thứ 2 (index bằng 3) của tất cả các chuỗi ký tự có trong mảng chuỗi 2 chiều như sau.
|
Kết quả:
l |
Lưu ý trong các ví dụ trên chúng ta đã sử dụng toán tử sizeof để lấy độ dài của mảng chuỗi 2 chiều. Bạn có thể tìm hiểu thêm tại bài Lấy kích thước, độ dài và số phần tử trong mảng 2 chiều
Tổng kết
Trên đây Kiyoshi đã hướng dẫn bạn về mảng chuỗi 2 chiều trong C++ rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.
Và hãy cùng tìm hiểu những kiến thức sâu hơn về C++ trong các bài học tiếp theo.
URL Link
https://laptrinhcanban.com/cpp/lap-trinh-cpp-co-ban/mang-trong-cpp/mang-chuoi-2-chieu-trong-cpp/
HOME › lập trình c++ cơ bản dành cho người mới học lập trình>>17. mảng trong c++