Программирование на C

Как используется функция Memset

Как используется функция Memset

В C функция memset () используется для установки однобайтового значения в блок памяти побайтно. Эта функция полезна для побайтовой инициализации блока памяти определенным значением. В этой статье мы подробно рассмотрим, как можно использовать эту функцию. Итак, приступим.

Заголовочный файл:

1
нить.час

Синтаксис:

1
void * memset (void * str, int ch, size_t n)

Эта функция устанавливает первый п байтов блока памяти, указанного ул от ch.

Аргументы:

Функция принимает 3 аргумента:

  1. ул: Это указатель на ячейку памяти, где будет установлена ​​память. Это указатель void, поэтому мы можем установить любой тип блока памяти, но память будет устанавливаться побайтно.
  2. ch: Это значение, которое нужно скопировать в блок памяти. Это целочисленное значение, но перед копированием оно преобразуется в беззнаковый символ.
  3. п: Это количество байтов в блоке памяти, которое установлено.

Возвращаемые значения:

memset () возвращает первый адрес блока памяти, с которого начинается установка значения.

Примеры:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Пример1.c
#включать
#включать
int main ()

char str [30] = "ABCD EFGH";
printf ("Перед memset =>% s", str);
memset (str, 'х', 3);
printf ("\ nПосле memset =>% s \ n", str);
возврат 0;


В Example1.c, мы объявили один символьный массив размером 30. Затем мы инициализировали его строкой «ABCD EFGH.”В функции memset мы передали 3 аргумента str, 'x' и 3. Таким образом, блок памяти, на который указывает str, будет сбрасывать первые 3 символа на 'x.'После memset, когда мы распечатываем память, мы получим «xxxD EFGH.”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Пример2.c
#включать
#включать
int main ()

char str [30] = "ABCD EFGH";
printf ("Перед memset =>% s", str);
memset (str + 4, 'x', 3);
printf ("\ nПосле memset =>% s \ n", str);
возврат 0;


В Example2.c, мы передали str + 4 в функцию memset. Итак, он сбрасывает память после 4-го места str.  После memset, когда мы распечатываем память, мы получим «ABCDxxxGH.”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Example3.c
#включать
#включать
int main ()

int arr [5], i;
memset (arr, 10,5 * sizeof (arr [0]));
printf ("\ narr Elements => \ n");
для (i = 0; i<5;i++)
printf ("% d \ t", arr [i]);
printf ("\ п");
возврат 0;


В Example3.c, мы объявили целочисленный массив размером 5 и пытаемся инициализировать его 10. Но из вывода мы увидели, что массив не инициализирован 10; вместо этого мы получили значение «168430090». Это связано с тем, что целочисленное значение больше одного байта, и функция memset преобразует значение в беззнаковый символ перед копированием. Теперь посмотрим, как мы получим значение «168430090».


Двоичное представление 10 - это 00000000 00000000 00000000 00001010.

Когда целое число преобразовано в беззнаковый символ, считается, что младший 1 байт. Итак, когда 10 конвертируется в unsigned char, это двоичное представление 00001010.

Функция memset () устанавливает байтовую ячейку памяти. Итак, всего 4 байта будут: 00001010 00001010 00001010 00001010.

Десятичное значение двоичного представления 4 байтов - 168430090.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Example4.c
#включать
#включать
int main ()

int arr [5], i;
memset (arr, 0,5 * sizeof (arr [0]));
printf ("\ narr Elements => \ n");
для (i = 0; i<5;i++)
printf ("% d \ t", arr [i]);
printf ("\ п");
возврат 0;


В примере 4.c, мы инициализировали целочисленный массив значением 0. Все биты двоичного представления 0 равны 0. Таким образом, массив инициализируется 0.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Пример5.c
#включать
#включать
int main ()

int arr [5], я;
memset (arr, -1,5 * sizeof (arr [0]));
printf ("\ narr Elements => \ n");
для (i = 0; i<5;i++)
printf ("% d \ t", arr [i]);
printf ("\ п");
возврат 0;


В примере 5.c, мы инициализировали целочисленный массив значением 0. Все биты двоичного представления -1 равны 1. Итак, массив инициализируется -1.

Заключение:

В этой статье мы увидели, используя функцию memset, как мы можем эффективно инициализировать или установить значение блока памяти. Мы можем установить любой символ и 0 или -1 как целочисленное значение для блока памяти. Функция Memset быстрее устанавливает большой кусок непрерывной памяти по сравнению с простой установкой местоположения с помощью цикла.

Как изменить левую и правую кнопки мыши на ПК с Windows 10
Совершенно нормально, что все устройства компьютерной мыши эргономичны для правшей. Но есть мышиные устройства, специально разработанные для левшей ил...
Эмуляция щелчков мыши с помощью мыши без щелчка в Windows 10
Использование мыши или клавиатуры в неправильной позе или чрезмерное использование может привести к множеству проблем со здоровьем, включая растяжение...
Добавьте жесты мыши в Windows 10 с помощью этих бесплатных инструментов
В последние годы компьютеры и операционные системы сильно эволюционировали. Было время, когда пользователям приходилось использовать команды для навиг...