C Programování

Jak se používá funkce Memset

Jak se používá funkce Memset

V jazyce C se funkce memset () používá k nastavení jednobajtové hodnoty na byte bloku paměti po bajtech. Tato funkce je užitečná pro inicializaci bajtového bloku paměti po bajtu o určitou hodnotu. V tomto článku uvidíme podrobně, jak lze tuto funkci použít. Pojďme tedy začít.

Soubor záhlaví:

1
tětiva.h

Syntax:

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

Tato funkce nastavuje první bajtů bloku paměti, na který ukazuje str podle ch.

Argumenty:

Funkce má 3 argumenty:

  1. str: Toto je ukazatel místa v paměti, kde bude nastavena paměť. Toto je ukazatel neplatnosti, takže můžeme nastavit jakýkoli typ bloku paměti, ale paměť bude nastavena bajt po bajtu.
  2. ch: Toto je hodnota, která se má zkopírovat do bloku paměti. Toto je celočíselná hodnota, ale před kopírováním se převede na nepodepsaný znak.
  3. n: Toto je počet bajtů v bloku paměti, který je nastaven.

Návratové hodnoty:

memset () vrací první adresu bloku paměti, odkud začíná nastavovat hodnotu.

Příklady:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Příklad 1.C
#zahrnout
#zahrnout
int main ()

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


V příkladu 1.c, deklarovali jsme jedno pole znaků o velikosti 30. Poté jsme jej inicializovali řetězcem „ABCD EFGH.„Ve funkci memset jsme předali 3 argumenty str, 'x' a 3. Takže blok paměti směřovaný str bude resetován na první 3 znaky o 'x.„Po memsetu, když vytiskneme paměť, dostaneme„ xxxD EFGH.“

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Příklad 2.C
#zahrnout
#zahrnout
int main ()

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


V příkladu 2.c, předali jsme str + 4 funkci memset. Resetuje tedy paměť po 4. umístění str.  Po memsetu, když vytiskneme paměť, dostaneme „ABCDxxxGH.“

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Příklad 3.C
#zahrnout
#zahrnout
int main ()

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


V příkladu 3.c, deklarovali jsme celé číslo o velikosti 5 a pokoušíme se ho inicializovat o 10. Ale z výstupu jsme viděli, že pole není inicializováno 10; místo toho jsme dostali hodnotu „168430090“. Je to proto, že celočíselná hodnota je větší než jeden bajt a funkce memset před zkopírováním převede hodnotu na nepodepsaný znak. Nyní uvidíme, jak získáme hodnotu „168430090“.


Binární reprezentace 10 je 00000000 00000000 00000000 00001010.

Když se celé číslo převede na nepodepsaný znak, vezme se v úvahu spodní 1 bajt. Když se tedy 10 převede na nepodepsaný znak, je to binární reprezentace 00001010.

Funkce memset () nastavuje umístění paměti bajt po bajtu. Takže celkem 4 bajty budou: 00001010 00001010 00001010 00001010.

Desetinná hodnota binární reprezentace 4 bajtů je 168430090.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Příklad4.C
#zahrnout
#zahrnout
int main ()

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


V příkladu 4.c, inicializovali jsme celé číslo o 0. Všechny bity binární reprezentace 0 jsou 0. Pole je tedy inicializováno 0.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Příklad 5.C
#zahrnout
#zahrnout
int main ()

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


V příkladu 5.c, inicializovali jsme celé číslo o 0. Všechny bity binární reprezentace -1 jsou 1. Pole je tedy inicializováno -1.

Závěr:

V tomto článku jsme pomocí funkce memset viděli, jak můžeme efektivně inicializovat nebo nastavit hodnotu paměťového bloku. Můžeme nastavit libovolný znak a 0 nebo -1 jako celočíselnou hodnotu do bloku paměti. Funkce Memset je rychlejší pro nastavení velkého bloku souvislé paměti ve srovnání s jednoduchým nastavením umístění pomocí smyčky.

Hry Top 10 her k hraní na Ubuntu
Top 10 her k hraní na Ubuntu
Platforma Windows byla jednou z dominujících platforem pro hraní her kvůli velkému procentu her, které se dnes vyvíjejí, aby nativně podporovaly Windo...
Hry 5 nejlepších arkádových her pro Linux
5 nejlepších arkádových her pro Linux
V dnešní době jsou počítače vážné stroje používané k hraní her. Pokud nemůžete získat nové vysoké skóre, budete vědět, co tím myslím. V tomto příspěvk...
Hry Battle For Wesnoth 1.13.6 Vývoj uvolněn
Battle For Wesnoth 1.13.6 Vývoj uvolněn
Battle For Wesnoth 1.13.6 vydané minulý měsíc, je šestým vývojovým vydáním v 1.13.série x a přináší řadu vylepšení, zejména do uživatelského rozhraní,...