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++. Она позволяет быстро установить все байты блока памяти в заданное значение, что делает ее неотъемлемой частью многих программных решений.