C Programmēšana

Kā tiek izmantota Memset funkcija

Kā tiek izmantota Memset funkcija

C, memset () funkcija tiek izmantota, lai iestatītu viena baita vērtību atmiņas bloka baitam pēc baita. Šī funkcija ir noderīga, lai inicializētu atmiņas bloka baitu pēc baita pēc noteiktas vērtības. Šajā rakstā mēs detalizēti redzēsim, kā šo funkciju var izmantot. Tātad, sāksim darbu.

Galvenes fails:

1
virkne.h

Sintakse:

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

Šī funkcija nosaka pirmo atmiņas bloka baiti, uz kuriem norāda str pēc ch.

Argumenti:

Funkcijai nepieciešami 3 argumenti:

  1. str: Šis ir tās atmiņas vietas rādītājs, kurā tiks iestatīta atmiņa. Šis ir tukšs rādītājs, tāpēc mēs varam iestatīt jebkura veida atmiņas blokus, bet atmiņa tiks iestatīta baits pēc baita.
  2. ch: Šī ir vērtība, kas jāpārkopē atmiņas blokā. Šī ir vesela skaitļa vērtība, bet pirms kopēšanas tā tiek pārveidota par neparakstītu rakstzīmi.
  3. n: Šis ir baitu skaits iestatītajā atmiņas blokā.

Atgriešanās vērtības:

memset () atgriež atmiņas bloka pirmo adresi, no kuras tā sāk iestatīt vērtību.

Piemēri:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Piemērs1.c
# iekļaut
# iekļaut
int main ()

char str [30] = "ABCD EFGH";
printf ("Pirms memset =>% s", str);
memset (str, 'x', 3);
printf ("\ nPēc memset =>% s \ n", str);
atgriešanās 0;


1. piemērā.c, mēs esam deklarējuši vienu rakstzīmju masīvu ar 30 izmēru. Tad mēs to esam inicializējuši ar virkni “ABCD EFGH.”Funkcijā memset mēs esam nodevuši 3 argumentus str, 'x' un 3. Tātad atmiņas bloks, uz kuru norāda str, pirmās 3 rakstzīmes tiks atiestatītas ar 'x.Pēc atmiņas izdrukāšanas atmiņā mēs iegūsim “xxxD EFGH.”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Piemērs2.c
# iekļaut
# iekļaut
int main ()

char str [30] = "ABCD EFGH";
printf ("Pirms memset =>% s", str);
memset (str + 4, 'x', 3);
printf ("\ nPēc memset =>% s \ n", str);
atgriešanās 0;


2. piemērā.c, mēs esam nodevuši str + 4 memset funkcijai. Tātad, tas atiestatīja atmiņu pēc str.  Pēc atmiņas izdrukājot atmiņu, mēs iegūsim “ABCDxxxGH.”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Piemērs3.c
# iekļaut
# iekļaut
int main ()

int arr [5], i;
memset (arr, 10,5 * sizeof (arr [0]));
printf ("\ narr Elements => \ n");
par (i = 0; i<5;i++)
printf ("% d \ t", arr [i]);
printf ("\ n");
atgriešanās 0;


3. piemērā.c, mēs esam deklarējuši vesela skaitļa masīvu ar 5. lielumu un mēģinām to inicializēt ar 10. Bet no izejas mēs redzējām, ka masīvs netiek inicializēts ar 10; tā vietā esam ieguvuši vērtību “168430090”. Tas ir tāpēc, ka veselā skaitļa vērtība ir lielāka par vienu baitu un memset funkcija pārveido vērtību par neparakstītu rakstzīmi pirms kopēšanas. Tagad mēs redzēsim, kā mēs iegūsim vērtību “168430090”.


10 binārais attēlojums ir 00000000 00000000 00000000 00001010.

Kad vesels skaitlis tiek pārvērsts par neparakstītu char, tiek ņemts vērā zemākais 1 baits. Tātad, kad 10 tiek pārvērsts par neparakstīto char, tas ir binārs attēlojums 00001010.

funkcija memset () nosaka atmiņas vietas baitu pēc baita. Tātad kopā būs 4 baiti: 00001010 00001010 00001010 00001010.

4 baitu binārā attēlojuma decimālvērtība ir 168430090.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 4. piemērs.c
# iekļaut
# iekļaut
int main ()

int arr [5], i;
memset (arr, 0,5 * sizeof (arr [0]));
printf ("\ narr Elements => \ n");
par (i = 0; i<5;i++)
printf ("% d \ t", arr [i]);
printf ("\ n");
atgriešanās 0;


4. piemērā.c, mēs esam inicializējuši vesela skaitļa masīvu ar 0. Visi binārā attēlojuma 0 biti ir 0. Tātad masīvu inicializē ar 0.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Piemērs5.c
# iekļaut
# iekļaut
int main ()

int arr [5], i;
memset (arr, -1,5 * sizeof (arr [0]));
printf ("\ narr Elements => \ n");
par (i = 0; i<5;i++)
printf ("% d \ t", arr [i]);
printf ("\ n");
atgriešanās 0;


5. piemērā.c, mēs esam inicializējuši vesela skaitļa masīvu ar 0. Visi -1 binārā attēlojuma biti ir 1. Tātad masīvu inicializē -1.

Secinājums:

Šajā rakstā mēs redzējām, izmantojot funkciju memset, kā mēs varam efektīvi inicializēt vai iestatīt atmiņas bloka vērtību. Atmiņas blokam mēs varam iestatīt jebkuru rakstzīmi un 0 vai -1 kā veselu skaitli. Memset funkcija ir ātrāka, lai iestatītu lielu blakusesošās atmiņas daļu, salīdzinot ar vienkārši vietas iestatīšanu, izmantojot cilpu.

Bezmaksas un atvērtā koda spēļu dzinēji Linux spēļu izstrādei
Šis raksts aptvers bezmaksas un atvērtā koda spēļu motoru sarakstu, kurus var izmantot, lai izstrādātu 2D un 3D spēles Linux. Šādu spēļu dzinēju ir da...
Tomb Raider for Linux apmācība
Tomb Raider ēna ir divpadsmitais papildinājums Tomb Raider sērijai - darbības piedzīvojumu spēļu franšīzei, kuru izveidoja Eidos Montreal. Spēli gan k...
Kā palielināt FPS Linux?
FPS apzīmē Kadri sekundē. FPS uzdevums ir izmērīt kadru ātrumu video atskaņošanā vai spēļu izrādēs. Vienkāršos vārdos nepārtrauktu pilnekrāna attēlu s...