Programare C

Cum este utilizată funcția Memset

Cum este utilizată funcția Memset

În C, funcția memset () este utilizată pentru a seta o valoare de un octet la un bloc de memorie octet cu octet. Această funcție este utilă pentru inițializarea unui bloc de memorie octet cu octet de o anumită valoare. În acest articol, vom vedea în detaliu cum poate fi utilizată această funcție. Asadar, haideti sa începem.

Fișier antet:

1
şir.h

Sintaxă:

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

Această funcție setează prima octeți ai blocului de memorie indicat de str de cap.

Argumente:

Funcția are 3 argumente:

  1. str: Acesta este indicatorul locației de memorie unde va fi setată memoria. Acesta este un pointer gol, deci putem seta orice tip de bloc de memorie, dar memoria va fi setată octet cu octet.
  2. cap: Aceasta este valoarea care trebuie copiată în blocul de memorie. Aceasta este o valoare întreagă, dar este convertită la un caracter nesemnat înainte de copiere.
  3. n: Acesta este numărul de octeți din blocul de memorie care este setat.

Returnează valorile:

memset () returnează prima adresă a blocului de memorie de unde începe să seteze valoarea.

Exemple:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Exemplul 1.c
#include
#include
int main ()

char str [30] = "ABCD EFGH";
printf („Înainte de memset =>% s”, str);
memset (str, 'x', 3);
printf ("\ nDupă memset =>% s \ n", str);
retur 0;


În Exemplul 1.c, am declarat o matrice de caractere de mărimea 30. Apoi l-am inițializat cu șirul „ABCD EFGH.”În funcția memset, am trecut 3 argumente str, 'x' și 3. Deci, blocul de memorie indicat de str va fi resetat primele 3 caractere cu 'x.„După memset, când imprimăm memoria, vom primi„ xxxD EFGH.”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Exemplul 2.c
#include
#include
int main ()

char str [30] = "ABCD EFGH";
printf ("Înainte de memset =>% s", str);
memset (str + 4, 'x', 3);
printf ("\ nDupă memset =>% s \ n", str);
retur 0;


În Exemplul 2.c, am trecut str + 4 la funcția memset. Deci, a resetat memoria după a 4-a locație a str.  După memset, când imprimăm memoria, vom primi „ABCDxxxGH.”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Exemplul 3.c
#include
#include
int main ()

int arr [5], i;
memset (arr, 10,5 * sizeof (arr [0]));
printf ("\ narr Elements => \ n");
pentru (i = 0; i<5;i++)
printf ("% d \ t", arr [i]);
printf ("\ n");
retur 0;


În Exemplul 3.c, am declarat o matrice întreagă de mărimea 5 și încercăm să o inițializăm cu 10. Dar din rezultat, am văzut că matricea nu este inițializată de 10; în schimb, avem valoarea „168430090”. Acest lucru se datorează faptului că valoarea întregului este mai mare de un octet și funcția memset convertește valoarea într-un caracter nesemnat înainte de copiere. Acum, vom vedea cum vom obține valoarea „168430090”.


Reprezentarea binară a 10 este 00000000 00000000 00000000 00001010.

Atunci când numărul întreg este convertit în caractere nesemnate, se ia în considerare 1 octet inferior. Deci, atunci când 10 este convertit în caractere nesemnate, este o reprezentare binară 00001010.

funcția memset () setează locația memoriei octet cu octet. Deci, un total de 4 octeți vor fi: 00001010 00001010 00001010 00001010.

Valoarea zecimală a reprezentării binare a 4 octeți este 168430090.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Exemplul 4.c
#include
#include
int main ()

int arr [5], i;
memset (arr, 0,5 * sizeof (arr [0]));
printf ("\ narr Elements => \ n");
pentru (i = 0; i<5;i++)
printf ("% d \ t", arr [i]);
printf ("\ n");
retur 0;


În Exemplul 4.c, am inițializat matricea întreagă cu 0. Toți biții reprezentării binare a lui 0 sunt 0. Deci matricea este inițializată cu 0.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Exemplul 5.c
#include
#include
int main ()

int arr [5], i;
memset (arr, -1,5 * sizeof (arr [0]));
printf ("\ narr Elements => \ n");
pentru (i = 0; i<5;i++)
printf ("% d \ t", arr [i]);
printf ("\ n");
retur 0;


În Exemplul 5.c, am inițializat matricea întreagă cu 0. Toți biții reprezentării binare a -1 sunt 1. Deci matricea este inițializată cu -1.

Concluzie:

În acest articol, am văzut folosind funcția memset cum putem inițializa sau seta valoarea unui bloc de memorie în mod eficient. Putem seta orice caracter și 0 sau -1 ca valoare întreagă la un bloc de memorie. Funcția Memset este mai rapidă pentru a seta o cantitate mare de memorie contiguă în comparație cu simpla setare a locației folosind o buclă.

Emulate Mouse clicks by hovering using Clickless Mouse in Windows 10
Using a mouse or keyboard in the wrong posture of excessive usage can result in a lot of health issues, including strain, carpal tunnel syndrome, and ...
Add Mouse gestures to Windows 10 using these free tools
In recent years computers and operating systems have greatly evolved. There was a time when users had to use commands to navigate through file manager...
Control & manage mouse movement between multiple monitors in Windows 10
Dual Display Mouse Manager lets you control & configure mouse movement between multiple monitors, by slowing down its movements near the border. Windo...