Khi lập trình C++, có đôi lúc chúng ta muốn ghép nối hoặc trộn gộp 2 mảng thành 1 mảng trong C++. Nếu trong các ngôn ngữ lập trình khác, chúng ta có thể đơn giản sử dụng toán tử cộng +
để ghép (nối, trộn, gộp) một mảng vào mảng khác theo kiểu arrayC = arrayA + arrayB
, thì chúng ta lại không thể làm điều đó trong C++ được. Thay vào đó thì chúng ta sẽ phải tự tạo ra hàm trộn 2 mảng thành 1 mảng trong C++ bằng cách ứng dụng hàm memcpy() trong thư viện chuẩn của C++.
Ghép 2 mảng trong C++
Ghép 2 mảng trong C++, hay còn gọi là nối 2 mảng trong C++, trộn 2 mảng thành 1 mảng trong C++, gộp 2 mảng thành 1 mảng trong C++… là xử lý nhằm gán toàn bộ các phần tử của một mảng vào cuối của một mảng khác.
Khác với các ngôn ngữ lập trình khác thì mảng trong C++ có kích thước cố định được quyết định khi khai báo mảng, do đó để ghép nối 1 mảng vào mảng khác trong C++, chúng ta cần chú ý mảng đích có đủ độ dài để chứa hết cả 2 mảng hay không. Nếu không đủ độ dài mà chúng ta vẫn cố ghép mảng, hệ quả là sự cố tràn màn hình có thể bị xảy ra.
Tuy nhiên cũng còn một cách khác hữu hiệu hơn, đó chính là thay vì ghép mảng 1 vào mảng 2 và lo lắng về kích thước có đủ chỗ không, thì chúng ta chuẩn bị sẵn một mảng thứ 3, và ghép 2 mảng ban đầu vào nó.
Và thay vì thao tác ghép nối trộn gộp và copy kết quả trong các mảng này, chúng ta sẽ thao tác trực tiếp với vùng bộ nhớ chứa chúng. Chúng ta cần hàm memcpy() trong C++ để làm được điều này.
Hàm memcpy() là một hàm có sẵn trong header file cstring, giúp chúng ta copy bộ nhớ trong máy tính. Ứng dụng hàm memcpy vào việc ghép nối trộn gộp 2 mảng với nhau, thì thay vì thao tác với 2 mảng chúng ta sẽ copy lần lượt vùng bộ nhớ chứa 2 mảng này vào một vùng bộ nhớ thứ 3 để lưu mảng kết quả.
Ôn lại một chút thì hàm memcpy() có cấu trúc như sau:
memcpy (dest_address, src_address, size);
Trong đó dest_address
là con trỏ chỉ vị trí đầu vùng bộ nhớ đích, src_address
là con trỏ chỉ vị trí đầu vùng bộ nhớ nguồn, và size
là kích thước cần copy. Ở đây, dest là viết tắt của destination có nghĩa là điểm đến, còn str là viết tắt của source có nghĩa là nguồn.
Và chúng ta viết chương trình ghép mảng trong C++ như sau:
|
Bạn có thể thấy chuỗi 2 đã được ghép vào chuỗi cuối chuỗi 1 và hoàn thành phép ghép nối trộn gộp mảng trong C++ như trên.
- Xem thêm: Lấy kích thước mảng trong C++
- Xem thêm: Độ dài mảng trong C++
Tổng kết
Trên đây Kiyoshi đã hướng dẫn bạn cách ghép nối mảng 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/ghep-noi-mang-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++