C programavimas

Kaip naudojama „Memset“ funkcija

Kaip naudojama „Memset“ funkcija

C, „memset“ () funkcija naudojama norint nustatyti vieno baito reikšmę atminties bloko baitui pagal baitą. Ši funkcija yra naudinga inicijuojant atminties bloko baitą pagal baitą pagal tam tikrą vertę. Šiame straipsnyje mes išsamiai pamatysime, kaip galima naudoti šią funkciją. Taigi, pradėkime.

Antraštės failas:

1
stygos.h

Sintaksė:

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

Ši funkcija nustato pirmąją pažymėto atminties bloko baitai str pateikė ch.

Argumentai:

Funkcijoje yra 3 argumentai:

  1. str: Tai atminties vietos, kurioje bus nustatyta atmintis, žymeklis. Tai yra tuščias žymeklis, todėl galime nustatyti bet kokio tipo atminties bloką, tačiau atmintis bus nustatyta baitais.
  2. ch: Tai reikšmė, kurią reikia nukopijuoti į atminties bloką. Tai yra sveiko skaičiaus reikšmė, tačiau prieš nukopijuojant ji konvertuojama į nepasirašytą simbolį.
  3. n: Tai yra baitų skaičius nustatytame atminties bloke.

Grąžinimo vertės:

atmintinė () grąžina pirmąjį atminties bloko adresą iš kur jis pradeda nustatyti vertę.

Pavyzdžiai:

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

char str [30] = "ABCD EFGH";
printf ("Prieš atmintinę =>% s", str);
atmintinė (str, 'x', 3);
printf ("\ nPo memset =>% s \ n", str);
grąžinti 0;


1 pavyzdyje.c, mes paskelbėme vieną simbolių masyvą, kurio dydis 30. Tada mes jį inicijavome eilute „ABCD EFGH.„Atminties funkcijoje mes perdavėme 3 argumentus str,„ x “ir 3. Taigi atminties blokas, pažymėtas str, atstatys pirmuosius 3 simbolius „x“.„Po atminties atspausdinę atmintį gausime„ xxxD EFGH “.“

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

char str [30] = "ABCD EFGH";
printf ("Prieš atmintinę =>% s", str);
atmintinė (str + 4, 'x', 3);
printf ("\ nPo memset =>% s \ n", str);
grąžinti 0;


2 pavyzdyje.c, mes perdavėme str + 4 atminties funkcijai. Taigi, jis iš naujo nustatė atmintį po 4-osios str. Vietos.  Po atminties atspausdinę atmintį gausime „ABCDxxxGH.“

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

int arr [5], i;
atmintinė (arr, 10,5 * sizeof (arr [0]));
printf ("\ narr Elements => \ n");
už (i = 0; i<5;i++)
printf ("% d \ t", arr [i]);
printf ("\ n");
grąžinti 0;


3 pavyzdyje.c, mes paskelbėme sveiko skaičiaus masyvą, kurio dydis 5, ir bandome jį inicijuoti 10. Bet iš išvesties matėme, kad masyvas nėra inicializuotas 10; vietoj to mes gavome vertę „168430090“. Taip yra todėl, kad sveiko skaičiaus vertė yra didesnė nei vienas baitas, o „Memset“ funkcija konvertuoja reikšmę į nepasirašytą simbolį prieš nukopijuojant. Dabar pamatysime, kaip gausime vertę „168430090“.


Dvejetainis simbolis 10 yra 00000000 00000000 00000000 00001010.

Kai sveikas skaičius konvertuojamas į nepasirašytą simbolį, atsižvelgiama į mažesnį 1 baitą. Taigi, kai 10 paverčiamas nepasirašytu simboliu, tai dvejetainis simbolis yra 00001010.

funkcija memset () nustato atminties vietos baitą pagal baitą. Taigi iš viso bus 4 baitai: 00001010 00001010 00001010 00001010.

Dešimtainė 4 baitų dvejetainio atvaizdavimo vertė yra 168430090.

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

int arr [5], i;
memset (arr, 0,5 * sizeof (arr [0]));
printf ("\ narr Elements => \ n");
už (i = 0; i<5;i++)
printf ("% d \ t", arr [i]);
printf ("\ n");
grąžinti 0;


4 pavyzdyje.c, mes inicijavome sveiko skaičiaus masyvą 0. Visi 0 dvejetainio atvaizdavimo bitai yra 0. Taigi masyvas inicijuojamas 0.

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

int arr [5], i;
atmintinė (arr, -1,5 * sizeof (arr [0]));
printf ("\ narr Elements => \ n");
už (i = 0; i<5;i++)
printf ("% d \ t", arr [i]);
printf ("\ n");
grąžinti 0;


5 pavyzdyje.c, mes inicijavome sveiko skaičiaus masyvą 0. Visi -1 dvejetainio atvaizdavimo bitai yra 1. Taigi masyvas inicijuojamas -1.

Išvada:

Šiame straipsnyje naudodami „memset“ funkciją matėme, kaip galime efektyviai inicijuoti arba nustatyti atminties bloko vertę. Mes galime nustatyti bet kurį simbolį ir 0 arba -1 kaip sveiko skaičiaus reikšmę atminties blokui. „Memset“ funkcija greičiau nustato didelę gretimos atminties dalį, palyginti su paprasčiausiu vietos nustatymu naudojant kilpą.

Kaip atsisiųsti ir paleisti „Sid Meier Civilization VI“ sistemoje „Linux“
Įvadas į žaidimą „Civilization 6“ yra šiuolaikinė klasikinės koncepcijos, pristatytos „Age of Empires“ žaidimų serijoje, koncepcija. Idėja buvo gana p...
Kaip įdiegti ir žaisti „Doom“ sistemoje „Linux“
Įvadas į Doom „Doom“ serija atsirado 90-aisiais, išleidus originalų „Doom“. Tai buvo tiesioginis hitas, o nuo to laiko žaidimų serija gavo daugybę apd...
„Vulkan“, skirta „Linux“ vartotojams
Kiekvienos naujos kartos grafikos plokštės matome, kaip žaidimų kūrėjai peržengia grafinės ištikimybės ribas ir artėja prie fotorealizmo. Nepaisant vi...