Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

memset trong C++

Trong phần này chúng ta sẽ xem mục đích của hàm memset() trong C++. Hàm này chuyển đổi giá trị ký tự thành ký tự không dấu (unsigned char) và sao chép nó vào mỗi ký tự đầu tiên n của đối tượng được trỏ bởi str[]. Nếu n lớn hơn kích thước chuỗi, hành vi không xác định.

Cú pháp của hàm memset():

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

Trong ví dụ này sẽ dùng một chuỗi, sau đó chuyển đổi từng ký tự thành ký tự khác cho đến độ dài n.

Ví dụ

#include <bits/stdc++.h>
using namespace std;

int main() {
    char str[] = "Hello World";
    memset(str, 'o', 6); // n = 6
    cout << str;
}

Kết quả

ooooooWorld

Hàm memset() có thể dùng để thiết lập tất cả giá trị thành 0 hoặc -1. Nhưng không thể dùng các giá trị khác, vì memset() hoạt động theo từng byte.

Ví dụ

#include <bits/stdc++.h>
using namespace std;

int main() {
    int array[10];
    memset(array, 0, sizeof(array));
    for(int i = 0; i < 10; i++) { cout << array[i] << " "; }
    cout << endl;
    memset(array, -1, sizeof(array));
    for(int i = 0; i < 10; i++) { cout << array[i] << " "; }
    cout << endl;
    memset(array, 3, sizeof(array));
    for(int i = 0; i < 10; i++) { cout << array[i] << " "; }
    cout << endl;
}

Kết quả

0 0 0 0 0 0 0 0 0 0
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1
50529027 50529027 50529027 50529027 50529027 50529027 50529027 50529027 50529027 50529027