Memmove() trong C và C++

Memmove Trong C Va C



Hôm nay, chúng ta sẽ tìm hiểu một trong những hàm quan trọng của ngôn ngữ C và C++ đó là hàm memmove(). Nhưng trước đó, chúng ta hãy xem nhanh những kiến ​​thức cơ bản về ngôn ngữ C và C++. Chúng ta cũng sẽ thảo luận về những chức năng có trong cả hai ngôn ngữ C/C++.

Ngôn ngữ lập trình C dễ dàng và khá hiệu quả cho mọi mục đích. Việc triển khai phần mềm như HĐH Windows, Cơ sở dữ liệu, Trình thông dịch và các công cụ khác đều có thể thực hiện được với nó. C là một ngôn ngữ tuyệt vời cho người mới bắt đầu học lập trình. Đó là lý do tại sao lập trình C được gọi là ngôn ngữ mẹ vì nó đóng vai trò là nền tảng cho tất cả các ngôn ngữ máy tính khác. Nền tảng của ngôn ngữ lập trình C++ dựa trên ý tưởng của lập trình hướng đối tượng (OOP). Người dùng có thể phát triển và hiểu các nguyên tắc của chương trình một cách dễ dàng vì C++ có cấu trúc rõ ràng. Ngôn ngữ lập trình C\C++ đặc biệt linh hoạt trong việc thực hiện nhiều chức năng và chuyển đổi một biến từ kiểu này sang kiểu khác. Hàm memmove() là một trong những hàm của C/C++.







Hàm memmove() truyền đồng thời các byte “num” từ nội dung của khối bộ nhớ được chỉ định bởi nguồn tới vị trí được chỉ định bởi đích. Hàm memmove() chỉ có lợi khi các đối tượng nguồn và đích chồng lên nhau và ngăn hành vi không xác định xảy ra. Để tìm hiểu thêm về hàm memmove(), hãy tìm hiểu sâu và xem cách triển khai cú pháp cũng như các ví dụ trong hàm memmove().



Cú pháp:

Đây là cùng một phong cách viết và cách triển khai hàm memmove() cho cả ngôn ngữ C và C++. Đầu tiên chúng ta viết từ khóa “void” nghĩa là nếu hàm không trả về giá trị nào thì chúng ta viết tên hàm muốn thực hiện đó là hàm memmove(). Trong dấu ngoặc hàm, chúng tôi viết đích để chúng tôi có thể đặt các byte “num” với từ khóa “void”. Sau đó, chúng tôi ghi vị trí nguồn từ nơi chúng tôi nhận được các byte “num”.







Thông số:

tay: Địa chỉ đến vị trí lưu trữ mà dữ liệu được sao chép.

src: Địa chỉ đến vị trí lưu trữ mà dữ liệu được sao chép từ đó.



đếm: Lượng dữ liệu cần sao chép từ nguồn đến đích.

Giá trị trả về:

Đổi lại, chúng tôi nhận được địa chỉ đến vùng bộ nhớ đích. Đích được trả về bởi hàm memmove().

Ví dụ 1: Triển khai Hàm Memmove() trong C

Hãy bắt đầu triển khai ví dụ đầu tiên và đơn giản về ngôn ngữ C. Để bắt đầu viết, đầu tiên chúng ta cần một trình biên dịch C để có thể viết và thực thi chương trình. Để làm điều đó, hãy mở trình biên dịch C và bắt đầu thực hiện chương trình.

#include
#include

int chính ( )
{
ký tự ch1 [ ] = { 'l' , 'tôi' , 'N' , 'Trong' , 'x' } ;

chiều dài int = sizeof ( ch1 ) / kích thước của ( ch1 [ 0 ] ) ;

bản inf ( 'Trước khi áp dụng hàm memmove(): ' ) ;
( int tôi = 0 ; tôi < chiều dài; tôi ++ )
{
bản inf ( '%c' , ch1 [ tôi ] ) ;
}

than * ch2 = & ch1 [ hai ] ;
ghi nhớ ( ch2, ch1, sizeof ( than ) * hai ) ;

bản inf ( ' \N \N Sau khi áp dụng hàm memmove(): ' ) ;

( int tôi = 0 ; tôi < 5 ; tôi ++ )
{
bản inf ( '%c ' , ch1 [ tôi ] ) ;
}
trở về 0 ;

}


Chúng tôi luôn bắt đầu bằng cách kết hợp các mô-đun chương trình cốt lõi sau khi khởi động trình biên dịch. Các mô-đun này là các mô-đun ngôn ngữ C đi kèm. Chúng ta chỉ cần gõ một dòng mã để bao gồm các mô-đun này, trái ngược với hàng chục dòng mã để xây dựng mô-đun. Chỉ báo “#” thông báo cho người dịch tải mô-đun trước khi sử dụng từ khóa “bao gồm” để thêm mô-đun vào chương trình. Mô-đun “stdio.h” có nghĩa là trình biên dịch chấp nhận dữ liệu từ người dùng và hiển thị cho người dùng. Mô-đun thứ hai của chương trình là “#include ” để chúng ta có thể sử dụng các hàm liên quan đến chuỗi trong chương trình hiện có.

Sau đó, chúng ta bắt đầu hàm main() để có thể viết dòng mã thực tế mà chúng ta muốn triển khai trong chương trình. Tại dòng 6, ta khai báo mảng ký tự tên “ch1” có kiểu ký tự. Sau đó, chúng tôi gán một giá trị ký tự cho nó. Sau đó, chúng tôi tính toán độ dài của “ch1” và in mảng đầu vào “ch1” bằng cách sử dụng “vòng lặp for”.

Sau đó, chúng ta khai báo con trỏ tới mảng “ch2” có kiểu ký tự và gán địa chỉ của mảng “ch1” cho mảng “ch2”. Sau đó, chúng tôi in nó bằng câu lệnh printf(). Hãy xem đầu ra của hình minh họa trước:

Ví dụ 2: Triển khai Hàm Memmove() trong C++

Đây là ví dụ cơ bản cho thấy hàm memmove() hoạt động như thế nào trong ngôn ngữ C++. Để bắt đầu viết, đầu tiên chúng ta cần một C++ IDE để có thể viết và thực thi chương trình. Để làm điều đó, hãy mở trình biên dịch C++ và bắt đầu thực hiện chương trình.

Sau khi mở trình biên dịch, chúng tôi luôn bắt đầu bằng cách bao gồm các tệp tiêu đề cần thiết cho ngôn ngữ lập trình C++ để chương trình chạy. Để xây dựng chương trình và sử dụng phương thức memmove(), trước tiên chúng tôi đưa vào hai tệp tiêu đề cơ bản – “iostream” và “cstring”. C++ cung cấp một số cách để làm việc với mảng và chuỗi. Các chức năng này được cung cấp để sử dụng khi tệp tiêu đề được bao gồm trong một chương trình với tệp tiêu đề “#include  ” được sử dụng để sao chép một số byte dữ liệu nhất định từ nguồn đến đích. Tệp tiêu đề “#include ”  được dùng cho cả đầu vào và đầu ra của dữ liệu từ người dùng. Sau đó, chúng tôi sử dụng “không gian tên std” tiêu chuẩn trong mã của mình để sử dụng cú pháp tiêu chuẩn của ngôn ngữ lập trình C++ để chúng tôi có thể ngăn các đối tượng, phương thức và tham số tham chiếu cùng một phạm vi trong toàn bộ chương trình.

#include
#bao gồm
sử dụng không gian tên std;

int chính ( )
{
ký tự src [ năm mươi ] = '1234567890' ;
định mệnh [ năm mươi ] = '0987654321' ;

cout << 'Trước khi Áp dụng bản ghi nhớ tới Đích:' << bắt đầu << kết thúc;
ghi nhớ ( đích, src, 6 ) ;
cout << 'Sau khi áp dụng memmove tới đích:' << tay

trở về 0 ;
}


Chúng ta bắt đầu viết hàm main() để bắt đầu thực thi một dòng mã thực tế. Ở dòng 7, có một mảng kiểu hai ký tự có độ dài 50 được khai báo là “src[50]” và “dest[50]”. Chúng tôi sử dụng câu lệnh “cout” để in thông báo, “Trước khi áp dụng memmove() cho Đích:”. Sau đó, chúng ta chuyển tham số “dest” để in giá trị của mảng “dest”. Sau đó, hàm memmove() được áp dụng cho biến kiểu ký tự được khai báo là “src[50]” và “dest[50]” để chồng lấp một số byte nhất định từ gốc(src) tới đích(dest) với số lượng 'đếm'. Điều này xác định số byte được sao chép từ “src” sang “dest”. Như bạn có thể thấy trong hình minh họa sau đây, chúng tôi đã khai báo số đếm là “6”.

Sau đó, chúng ta sử dụng lại câu lệnh “cout” để hiển thị thông báo “Sau khi áp dụng memmove() cho Destination: ”, và truyền biến “dest” mảng kiểu “character”. Để dừng chương trình chạy, chúng ta phải sử dụng câu lệnh return ở phần kết của chương trình. Sau đó, chúng tôi trả về 0 cho chức năng chính, cho biết chương trình được thực hiện thành công và đạt được mục tiêu của nó.

Bạn có thể thấy trong đầu ra sau của phương thức memmove() nếu có sự trùng lặp, ví dụ, khi con trỏ ban đầu di chuyển đến chữ cái 6, con trỏ tiếp tục in và các ký tự sau sẽ chồng lên nhau. Đoạn mã C++ này đã được chạy và kết quả được hiển thị trong hình ảnh sau:

Sự kết luận

Trong bài viết này, chúng ta đã tìm hiểu về hàm memmove() trong ngôn ngữ lập trình C và C++. Chúng ta đã nói về cách thức hoạt động của hàm memmove() thông qua ví dụ về C và C++ với lời giải thích chi tiết về từng dòng mã. Chúng tôi hy vọng rằng bạn thấy bài viết này hữu ích trong việc phát triển kiến ​​thức của mình về hàm memmove() trong C và C++.