Cách sao chép mảng bằng memmove() trong lập trình C

Cach Sao Chep Mang Bang Memmove Trong Lap Trinh C



Mảng là một thành phần cơ bản trong ngôn ngữ lập trình C, cho phép lập trình viên lưu trữ nhiều mục có cùng kiểu dữ liệu trong một biến duy nhất. Đôi khi một lập trình viên có thể cần sao chép nội dung của mảng này sang mảng khác.

Hàm memmove() là gì

Hàm thư viện C memmove() được sử dụng để sao chép một số byte nhất định từ địa chỉ bộ nhớ này sang địa chỉ bộ nhớ khác. Do thực tế là nó không bị ảnh hưởng bởi các vùng dữ liệu chồng chéo nên đây là một kỹ thuật sao chép dữ liệu hiệu quả và năng suất. Khi đang sử dụng memmove() để sao chép một mảng, có một số điều cần lưu ý. Đầu tiên, hàm phải được cung cấp hai con trỏ, một biểu thị vị trí bộ nhớ nguồn và con trỏ kia biểu thị vị trí bộ nhớ đích. Số lượng byte mà bạn muốn sao chép từ nguồn đến đích cũng phải được chỉ định.

Các memmove() method là một chức năng linh hoạt có thể xử lý các nguồn chồng chéo và sao chép dữ liệu theo bất kỳ thứ tự nào từ bất kỳ đâu trong bộ nhớ. Hạn chế duy nhất là mất nhiều thời gian hơn một chút so với các phương pháp sao chép khác như memcpy().







Cách sao chép mảng bằng memmove() trong lập trình C

Các memmove() chức năng được định nghĩa trong thư viện và có cú pháp:



khoảng trống * ghi nhớ ( khoảng trống * bắt đầu , hằng số khoảng trống * src , size_t N ) ;

Con trỏ khoảng trống * định mệnh chỉ định mảng đích mà nội dung của mảng nguồn sẽ được sao chép vào đó. Con trỏ tới mảng nguồn mà chúng ta muốn sao chép là const khoảng trống * src . Số lượng byte mà chúng ta muốn sao chép từ mảng nguồn sang mảng đích được chỉ định bởi đối số size_t n .



Ví dụ, hãy xem dòng mã sau:





#include

#include

int chủ yếu ( ) {

int nguồn_array [ ] = { 1 , 2 , 3 , 4 , 5 } ;

int đích_mảng [ 5 ] = { 0 } ;

size_t kích cỡ = kích thước của ( nguồn_array ) ;

ghi nhớ ( đích_mảng , nguồn_array , kích cỡ ) ;

( int Tôi = 0 ; Tôi < 5 ; Tôi ++ ) {

bản inf ( '%d' , đích_mảng [ Tôi ] ) ;

}

trở lại 0 ;

}

Mảng nguồn và mảng mảng đích được xác định đầu tiên trong đoạn mã trên. Mảng đích ban đầu trống, nhưng mảng nguồn có các phần tử từ 1 đến 5. sizeof() toán tử sau đó được sử dụng để xác định kích thước của mảng nguồn và kết quả được lưu trong biến kích thước. Nội dung của mảng nguồn được sao chép qua mảng đích.

đầu ra



Phần kết luận

Ngôn ngữ lập trình C cung cấp một cách hiệu quả và đáng tin cậy để sao chép các mảng bằng memmove() chức năng. Tính linh hoạt của nó đến từ khả năng xử lý bộ nhớ chồng chéo và do cú pháp đơn giản của nó, bất kỳ dự án C nào cũng có thể sử dụng nó.