memset: функция для заполнения блока памяти заданным значением
memset
- это функция языка программирования C и C++, которая используется для заполнения блока памяти определенным значением. Она позволяет установить все байты блока памяти в заданное значение или символ.
Прототип функции memset
выглядит следующим образом:
void* memset(void* ptr, int value, size_t num);
Где:
ptr
- указатель на начало блока памяти, который нужно заполнить;value
- значение, которым будут заполнены байты блока памяти;num
- количество байтов, которые нужно заполнить.
Данная функция часто используется для инициализации массивов и структур, а также для очистки блоков памяти перед их использованием.
Давайте рассмотрим примеры использования функции memset
.
Пример 1: Инициализация массива нулевыми значениями
#include <stdio.h>
#include <string.h>
int main() {
int arr[5];
memset(arr, 0, sizeof(arr));
for (int i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
return 0;
}
В данном примере мы создали массив arr
из 5 элементов типа int
. Затем мы использовали функцию memset
для заполнения его нулевыми значениями. Результатом выполнения программы будет вывод: 0 0 0 0 0.
Пример 2: Инициализация строкового массива
#include <stdio.h>
#include <string.h>
int main() {
char str[10];
memset(str, 'A', sizeof(str));
str[sizeof(str) - 1] = '\0';
printf("%s\n", str);
return 0;
}
В этом примере мы создали строковый массив str
размером 10 символов и заполнили его символом 'A' с помощью функции memset
. Затем мы добавили символ '\0' в конце строки, чтобы она стала корректной строкой в стиле C. Результатом выполнения программы будет вывод: "AAAAAAAAA".
Пример 3: Очистка структуры перед использованием
#include <stdio.h>
#include <string.h>
struct Person {
char name[20];
int age;
};
int main() {
struct Person p;
memset(&p, 0, sizeof(p));
printf("Name: %s\n", p.name);
printf("Age: %d\n", p.age);
return 0;
}
В данном примере мы определили структуру Person
, содержащую поле name
типа char[20]
и поле age
типа int
. Затем мы создали экземпляр структуры Person
и использовали функцию memset
для очистки его полей. Программа выведет: "Name: " (пустая строка) и "Age: 0".
Таким образом, функция memset
является очень полезной и широко используется в программировании на языках C и C++. Она позволяет быстро установить все байты блока памяти в заданное значение, что делает ее неотъемлемой частью многих программных решений.