Wie die Memset -Funktion verwendet wird

Wie die Memset -Funktion verwendet wird

In C wird die Funktion memset () verwendet, um einen Ein-Byte-Wert auf ein Speicherblock-Byte durch Byte festzulegen. Diese Funktion ist nützlich für die Initialisierung eines Speicherblock -Byte durch Byte durch einen bestimmten Wert. In diesem Artikel werden wir ausführlich sehen, wie diese Funktion verwendet werden kann. Also lasst uns anfangen.

Header-Datei:

Saite.H

Syntax:

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

Diese Funktion legt die erste fest N Bytes des Speicherblocks von gezeigt von str von CH.

Argumente:

Die Funktion dauert 3 Argumente:

  1. str: Dies ist der Zeiger des Speicherorts, an dem der Speicher festgelegt wird. Dies handelt.
  2. CH: Dies ist der Wert, der in den Speicherblock kopiert werden soll. Dies ist ein ganzzahliger Wert, der jedoch vor dem Kopieren in ein nicht signiertes Zeichen umgewandelt wird.
  3. N: Dies ist die Anzahl der Bytes im Speicherblock, der eingestellt ist.

Rückgabewerte:

memset () Gibt die erste Adresse des Speicherblocks zurück, von dem er beginnt, den Wert festzulegen.

Beispiele:

//Beispiel 1.C
#enthalten
#enthalten
int main ()

char str [30] = "ABCD EFGH";
printf ("vor memset => %s", str);
memset (str, 'x', 3);
printf ("\ nafter memset => %s \ n", str);
Rückkehr 0;


In Beispiel1.c, wir haben ein Zeichenarray der Größe 30 deklariert. Dann haben wir es mit der String „ABCD EFGH initialisiert.In der Memset -Funktion haben wir 3 Argumente übergeben, Str, 'X' und 3. Der von STR gezeigte Speicherblock wird also die ersten 3 Zeichen durch 'x zurücksetzen.'Nach dem Memset erhalten wir, wenn wir den Speicher drucken, „xxxd efgh.”

// Beispiel2.C
#enthalten
#enthalten
int main ()

char str [30] = "ABCD EFGH";
printf ("vor memset => %s", str);
memset (str+4, 'x', 3);
printf ("\ nafter memset => %s \ n", str);
Rückkehr 0;


In Beispiel2.c, wir haben Str+4 an die Memset -Funktion bestanden. Also setzte es den Speicher nach dem 4. Standort von STR zurück. Wenn wir den Speicher drucken, erhalten wir nach Memset „ABCDXXXGH.”

// Beispiel3.C
#enthalten
#enthalten
int main ()

int arr [5], ich;
memset (arr, 10,5*sizeof (arr [0]));
printf ("\ narrelements => \ n");
für (i = 0; i<5;i++)
printf ("%d \ t", arr [i]);
printf ("\ n");
Rückkehr 0;


In Beispiel3.c, wir haben eine Ganzzahl -Reihe von Größe 5 deklariert und versucht, sie um 10 zu initialisieren. Aus der Ausgabe haben wir jedoch gesehen, dass das Array nicht um 10 initialisiert wird; Stattdessen haben wir den Wert "168430090". Dies liegt daran. Jetzt werden wir sehen, wie wir den Wert „168430090“ erhalten werden.


Die binäre Darstellung von 10 ist 0000000000000000 00000000 00001010.

Wenn die Ganzzahl in nicht signiertes Zeichen konvertiert wird, wird das untere 1 -Byte berücksichtigt. Wenn also 10 in nicht signiertes Zeichen umgewandelt wird, ist es eine binäre Darstellung 00001010.

Memset () -Funktion legt das Speicherort -Byte nach Byte fest. Insgesamt 4 Bytes sind: 00001010 00001010 00001010 00001010.

Der Dezimalwert der binären Darstellung von 4 Bytes beträgt 168430090.

// Beispiel4.C
#enthalten
#enthalten
int main ()

int arr [5], ich;
memset (arr, 0,5*sizeof (arr [0]));
printf ("\ narrelements => \ n");
für (i = 0; i<5;i++)
printf ("%d \ t", arr [i]);
printf ("\ n");
Rückkehr 0;


In Beispiel4.c, wir haben das Ganzzahlarray um 0 initialisiert. Alle Bits der binären Darstellung von 0 sind 0. Das Array wird also durch 0 initialisiert.

// Beispiel5.C
#enthalten
#enthalten
int main ()

int arr [5], ich;
memset (arr, -1,5*sizeof (arr [0]));
printf ("\ narrelements => \ n");
für (i = 0; i<5;i++)
printf ("%d \ t", arr [i]);
printf ("\ n");
Rückkehr 0;


In Beispiel5.c, wir haben das Ganzzahlarray um 0 initialisiert. Alle Bits der binären Darstellung von -1 sind 1. Das Array wird also durch -1 initialisiert.

Abschluss:

In diesem Artikel haben wir die Memset -Funktion verwendet, wie wir den Wert eines Speicherblocks effizient initialisieren oder festlegen können. Wir können jedes Zeichen und 0 oder -1 als Ganzzahlwert für einen Speicherblock einstellen. Die MEMSET -Funktion ist schneller, um einen großen Teil des zusammenhängenden Speichers im Vergleich zum Einstellen des Speichers mit einer Schleife festzulegen.