C Ohjelmointi

Kuinka Memset-toimintoa käytetään

Kuinka Memset-toimintoa käytetään

C: ssä memset () -toimintoa käytetään asettamaan yksitavuinen arvo muistilohkotavulle tavun mukaan. Tämä toiminto on hyödyllinen alustettaessa muistilohkotavu tavuina tietyllä arvolla. Tässä artikkelissa näemme yksityiskohtaisesti, kuinka tätä toimintoa voidaan käyttää. Joten, aloitetaan.

Otsikkotiedosto:

1
merkkijono.h

Syntaksi:

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

Tämä toiminto asettaa ensimmäisen tavun osoittama muistilohko str mennessä ch.

Väitteet:

Funktiossa on 3 argumenttia:

  1. str: Tämä on muistipaikan osoitin, johon muisti asetetaan. Tämä on tyhjä osoitin, joten voimme asettaa minkä tahansa tyyppisen muistilohkon, mutta muisti asetetaan tavu tavuna.
  2. ch: Tämä on arvo, joka on kopioitava muistilohkoon. Tämä on kokonaislukuarvo, mutta se muunnetaan allekirjoittamattomaksi merkiksi ennen kopiointia.
  3. n: Tämä on asetettujen muistilohkojen tavujen määrä.

Palautusarvot:

muistikirja () palauttaa muistilohkon ensimmäisen osoitteen, josta se alkaa asettaa arvoa.

Esimerkkejä:

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

char str [30] = "ABCD EFGH";
printf ("Ennen verkkokokonaisuutta =>% s", str);
muistikirja (str, 'x', 3);
printf ("\ nMemetsetin jälkeen =>% s \ n", str);
paluu 0;


Esimerkissä 1.c, olemme ilmoittaneet yhden merkkiryhmän, jonka koko on 30. Sitten olemme alustaneet sen merkkijonolla “ABCD EFGH.”Memset-funktiossa olemme välittäneet 3 argumenttia str, 'x' ja 3. Joten str: n osoittama muistilohko nollaa ensimmäiset 3 merkkiä x: llä.'Kun muistia on tulostettu muistin jälkeen, saamme “xxxD EFGH.”

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

char str [30] = "ABCD EFGH";
printf ("Ennen verkkokokonaisuutta =>% s", str);
muistisarja (str + 4, 'x', 3);
printf ("\ nMemetsetin jälkeen =>% s \ n", str);
paluu 0;


Esimerkissä 2.c, olemme välittäneet str + 4: n memset-funktiolle. Joten se nollaa muistin str: n 4. sijainnin jälkeen.  Kun muistitulos on muistin tulostus, saamme “ABCDxxxGH.”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Esimerkki 3.c
#sisältää
#sisältää
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 ("\ n");
paluu 0;


Esimerkissä 3.c, olemme ilmoittaneet kokonaislukumatriisin, jonka koko on 5, ja yritämme alustaa sen 10: llä. Mutta tuotoksesta olemme nähneet, että taulukkoa ei alusteta 10: llä; sen sijaan olemme saaneet arvon "168430090". Tämä johtuu siitä, että kokonaisluku on suurempi kuin yksi tavu, ja memset-funktio muuntaa arvon allekirjoittamattomaksi merkiksi ennen kopiointia. Näemme nyt, kuinka saamme arvon "168430090".


10: n binaarinen esitys on 00000000 00000000 00000000 00001010.

Kun kokonaisluku muunnetaan allekirjoittamattomaksi merkiksi, otetaan huomioon alempi 1 tavu. Joten, kun 10 muunnetaan allekirjoittamattomaksi chariksi, se on binaariesitys 00001010.

memset () -toiminto asettaa muistipaikkatavun tavuittain. Joten yhteensä 4 tavua on: 00001010 00001010 00001010 00001010.

4 tavun binaariesityksen desimaaliarvo on 168430090.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Esimerkki 4.c
#sisältää
#sisältää
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 ("\ n");
paluu 0;


Esimerkissä 4.c, olemme alustaneet kokonaisluvun taulukon 0: lla. Kaikki binaarisen esityksen 0 bitit ovat 0. Joten taulukko alustetaan 0: lla.

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

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


Esimerkissä 5.c, olemme alustaneet kokonaislukumatriisin 0: lla. -1-binaariesityksen kaikki bitit ovat 1. Joten taulukko alustetaan -1: llä.

Päätelmä:

Tässä artikkelissa olemme nähneet memset-toiminnon avulla, kuinka voimme alustaa tai asettaa muistilohkon arvon tehokkaasti. Voimme asettaa minkä tahansa merkin ja 0 tai -1 kokonaislukuarvoksi muistilohkolle. Memset-toiminto on nopeampi asettaa suuri osa vierekkäistä muistia verrattuna yksinkertaiseen sijainnin asettamiseen silmukalla.

Battle for Wesnoth Tutorial
The Battle for Wesnoth is one of the most popular open source strategy games that you can play at this time. Not only has this game been in developmen...
0 A.D. Tutorial
Out of the many strategy games out there, 0 A.D. manages to stand out as a comprehensive title and a very deep, tactical game despite being open sourc...
Unity3D Tutorial
Introduction to Unity 3D Unity 3D is a powerful game development engine. It is cross platform that is it allows you to create games for mobile, web, d...