Memset là gì

1 int = 4 bytes = 32 bits
memset(dp, 0, sizeof dp); nó sẽ đặt từng bytes của mảng int dp[1005][20005]; thành 0

VD: số n dạng là xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx (x = 0, 1) (dạng nhị phân của n đó)

memset(dp, 0, sizeof dp); sẽ biến toàn bộ n thành 00000000 00000000 00000000 00000000
tức là = 0;

VD2: memset(dp, 60, sizeof dp); vì 60_{10} = 00111100_2
nên toàn bộ số hạng của mảng dp sẽ bằng 00111100 00111100 00111100 00111100 = 60 \times(2^0+2^8+2^{16}+2^{24}) = 1010580540 > 10^9

VD3 : int dp[1005][20005];0 sẽ gán toàn bộ giá trị mảng = -1

Hàm void *memset(void *str, int c, size_t n) sao chép ký tự c (một unsigned char) tới n ký tự đầu tiên của chuỗi được trỏ tới bởi tham số str.

Khai báo hàm memset() trong C

Cú pháp khai báo memset() trong thư viện C:

void *memset(void *str, int c, size_t n)

Tham số

  • str -- Đây là một con trỏ tới khối nhớ để điền..
  • c -- Đây là giá trị để được thiết lập. Giá trị được truyền dưới dạng một int, nhưng hàm điền vào khối nhớ bởi sử dụng sự chuyển đổi unsigned char của giá trị này.
  • n -- Đây là số byte để được thiết lập giá trị.

Trả về giá trị

  • Hàm này trả về một con trỏ tới vùng nhớ str.

Ví dụ minh họa cách sử dụng của memset() trong C:

#include 
#include 

int main ()
{
   char str[50];

   strcpy(str,"Hoc C co ban va nang cao tai Hoclaptrinh");
   puts(str);

   memset(str,'$',7);
   puts(str);

   return(0);
}

Biên dịch và chạy chương trình C trên sẽ cho kết quả:

Memset là gì

Hàm void *memset(void *str, int c, size_t n) sao chép ký tự c (một unsigned char) tới n ký tự đầu tiên của chuỗi được trỏ tới bởi tham số str.

Khai báo hàm memset() trong C

Dưới đây là phần khai báo cho memset() trong C:

void *memset(void *str, int c, size_t n)

Tham số

  • str -- Đây là một con trỏ tới khối nhớ để điền..

  • c -- Đây là giá trị để được thiết lập. Giá trị được truyền dưới dạng một int, nhưng hàm điền vào khối nhớ bởi sử dụng sự chuyển đổi unsigned char của giá trị này.

  • n -- Đây là số byte để được thiết lập giá trị.

Trả về giá trị

Hàm này trả về một con trỏ tới vùng nhớ str.

Ví dụ

Chương trình C sau minh họa cách sử dụng của memset() trong C:

#include 
#include 

int main ()
{
   char str[50];

   strcpy(str,"Hoc C co ban va nang cao tai VietJack");
   puts(str);

   memset(str,'$',7);
   puts(str);
   
   return(0);
}

Biên dịch và chạy chương trình C trên sẽ cho kết quả:

Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.

Memset là gì

Memset là gì

Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:

Các bạn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp các bạn vượt qua các dự án trên trường và đi thực tập Java. Khóa học có giá chỉ 300K, nhằm ưu đãi, tạo điều kiện cho sinh viên cho thể mua khóa học.

Nội dung khóa học gồm 16 chuơng và 100 video cực hay, học trực tiếp tại https://www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/ Bạn nào có nhu cầu mua, inbox trực tiếp a Tuyền, cựu sinh viên Bách Khoa K53, fb: https://www.facebook.com/tuyen.vietjack

Follow facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.

– Thường được sử dụng để khởi tạo giá trị của một biến mảng (array), biến cấu trúc (struct),… về giá trị mặc định như 0 đối với giá trị của int, 0.0 đối với giá trị của double, ‘\0’ đối với giá trị của char,…

Trong bài viết này chúng ta sẽ tìm hiểu về hàm memset() trong C / C++. Đây là một hàm được sử dụng sao chép ký tự trong một chuỗi.

Memset là gì

Memset là gì

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Hàm memset() là hàm có sẵn trong thư viện cstring, vì vậy trước khi sử dụng nó các bạn cần khai báo thư viện đã nhé: #include

Cú pháp hàm memset() trong C / C++

Hàm memset() trong C++ được sử dụng để sao chép một ký tự đơn lẻ trong một khoảng nhất định vào một đối tượng.

Cú pháp:

Bài viết này được đăng tại [free tuts .net]

void* memset( void* dest, int ch, size_t count );

Trong đó:

  • dest: Con trỏ tới đối tượng để sao chép ký tự.
  • ch: Ký tự cần sao chép.
  • count: Số lần sao chép.

Hàm trả về một chuỗi đã được sao chép và lưu vào con trỏ dest.

Cách dùng hàm memset() trong C / C++

Trong phần này mình sẽ thực hiện một ví dụ để mình họa cho hàm memset() trong C++.

Cụ thể mình sẽ tạo một biến dest với độ dài 50 ký tự để lưu các ký tự đã được sao chép. Sau đó sử dụng hàm memset() để sao chép ký tự 'a' với số lần là 5.

#include 
#include 
using namespace std;

int main() {
  //khai báo biến dest có độ dài 50 ký tự, được dùng để lưu các ký tự lặp lại
  char dest[50];
  //biến ch là biến được sử dụng để lặp lại
  char ch = 'a';
  //gọi hàm memset để lặp lại ký tự a 5 lần rồi gán vào biến dest
  memset(dest, ch, 5);

  cout << "Sau khi gọi hàm memset để lặp lại" << endl;
  cout << "\tBiến dest = " << dest;

  cout<<"\n-------------------------------\n";
  cout<<"Chương trình này được đăng tại Freetuts.net";
}

Kết quả:

Memset là gì

Như vậy là chúng ta đã tìm hiểu xong hàm memset() trong C / C++. Đây là một hàm được sử dụng khá nhiều trong các bài tâp về string, vì vậy hãy luyện tập thật nhiều để sử dụng nó thành thạo nhé. Chúc các bạn thành công !!!