C Programiranje

Kako se uporablja funkcija Memset

Kako se uporablja funkcija Memset

V C se funkcija memset () uporablja za nastavitev enobajtne vrednosti na bajt za bajtom. Ta funkcija je uporabna za inicializacijo bajta za bajtom pomnilnika z določeno vrednostjo. V tem članku bomo podrobno videli, kako lahko to funkcijo uporabljamo. Torej, začnimo.

Datoteka glave:

1
vrvica.h

Sintaksa:

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

Ta funkcija nastavi prvo bajtov pomnilniškega bloka, ki ga kaže str avtor pogl.

Argumenti:

Funkcija zajema 3 argumente:

  1. str: To je kazalec mesta v pomnilniku, kjer bo nastavljen pomnilnik. To je void kazalec, zato lahko nastavimo katero koli vrsto pomnilniškega bloka, vendar bo pomnilnik nastavljen po bajtih.
  2. pogl: To je vrednost, ki jo želite kopirati v pomnilniški blok. To je celoštevilčna vrednost, ki pa se pred kopiranjem pretvori v nepodpisan znak.
  3. n: To je število bajtov v nastavljenem pomnilniškem bloku.

Vrnjene vrednosti:

memset () vrne prvi naslov pomnilniškega bloka, od koder začne nastavljati vrednost.

Primeri:

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

char str [30] = "ABCD EFGH";
printf ("Pred memset =>% s", str);
memset (str, 'x', 3);
printf ("\ nPo memsetu =>% s \ n", str);
vrnitev 0;


V primeru1.c, razglasili smo eno znakovno polje velikosti 30. Nato smo ga inicializirali z nizom »ABCD EFGH.”V funkciji memset smo podali 3 argumente str, 'x' in 3. Torej, pomnilniški blok, na katerega kaže str, bo prve tri znake ponastavil z 'x'.'Po memsetu, ko natisnemo pomnilnik, bomo dobili "xxxD EFGH."

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

char str [30] = "ABCD EFGH";
printf ("Pred memset =>% s", str);
memset (str + 4, 'x', 3);
printf ("\ nPo memsetu =>% s \ n", str);
vrnitev 0;


V primeru2.c, funkciji memset smo predali str + 4. Torej je ponastavil pomnilnik po 4. mestu str.  Ko memset natisnemo pomnilnik, bomo dobili “ABCDxxxGH."

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

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


V primeru3.c, razglasili smo celoštevilsko matriko velikosti 5 in jo poskušali inicializirati do 10. Toda iz izhoda smo videli, da matrika ni inicializirana z 10; namesto tega imamo vrednost "168430090". To je zato, ker je celoštevilska vrednost večja od enega bajta in funkcija memset pred kopiranjem pretvori vrednost v nepodpisan znak. Zdaj bomo videli, kako bomo dobili vrednost "168430090".


Binarna predstavitev 10 je 00000000 00000000 00000000 00001010.

Ko se celo število pretvori v nepodpisani char, se upošteva spodnji 1 bajt. Torej, ko se 10 pretvori v nepodpisani char, je binarna predstavitev 00001010.

Funkcija memset () nastavi bajt za lokacijo pomnilnika. Torej, skupaj bodo 4 bajti: 00001010 00001010 00001010 00001010.

Decimalna vrednost binarne predstavitve 4 bajtov je 168430090.

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

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


V primeru4.c, celoštevilsko matriko smo inicializirali z 0. Vsi biti binarne predstavitve 0 so 0. Torej je matrika inicializirana z 0.

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

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


V primeru5.c, celoštevilsko matriko smo inicializirali z 0. Vsi biti binarne predstavitve -1 so 1. Torej je matrika inicializirana z -1.

Zaključek:

V tem članku smo s pomočjo funkcije memset videli, kako lahko učinkovito inicializiramo ali nastavimo vrednost pomnilniškega bloka. Pomnilniškemu bloku lahko nastavimo poljuben znak in 0 ali -1 kot celoštevilčno vrednost. Funkcija Memset hitreje nastavi velik del neprekinjenega pomnilnika v primerjavi s preprosto nastavitvijo lokacije z zanko.

How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...
S pomočjo gumba X-Mouse Button Control različno prilagodite gumbe miške za različno programsko opremo
Mogoče potrebujete orodje, ki bi lahko spremenilo nadzor miške z vsako aplikacijo, ki jo uporabljate. V tem primeru lahko preizkusite aplikacijo z ime...
Microsoft Sculpt Touch Wireless Mouse Review
Pred kratkim sem prebral o Microsoftov kiparski dotik brezžično miško in se odločil za nakup. Potem ko sem ga nekaj časa uporabljal, sem se odločil, d...