Comment la fonction Memset est utilisée

Comment la fonction Memset est utilisée

En C, la fonction memset () est utilisée pour définir une valeur à un octet sur un octet de bloc de mémoire par octet. Cette fonction est utile pour l'initialisation d'un octet de bloc de mémoire par octet par une valeur particulière. Dans cet article, nous verrons en détail comment cette fonction peut être utilisée. Alors, commençons.

En tête de fichier:

chaîne.H

Syntaxe:

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

Cette fonction définit le premier n octets du bloc de mémoire pointé par Str par ch.

Arguments:

La fonction prend 3 arguments:

  1. Str: Ceci est le pointeur de l'emplacement de la mémoire où la mémoire sera définie. Il s'agit d'un pointeur vide, nous pouvons donc définir n'importe quel type de bloc de mémoire, mais la mémoire sera définie l'octet par octet.
  2. ch: C'est la valeur qui doit être copiée dans le bloc de mémoire. Ceci est une valeur entière, mais il est converti en un personnage non signé avant de copier.
  3. n: Ceci est le nombre d'octets dans le bloc de mémoire qui est défini.

Valeurs de retour:

memset () Renvoie la première adresse du bloc de mémoire à partir de l'endroit où il commence à définir la valeur.

Exemples:

//Exemple 1.c
#inclure
#inclure
int main()

char Str [30] = "ABCD EFGH";
printf ("avant memeset =>% s", str);
memset (str, 'x', 3);
printf ("\ nafter memset =>% s \ n", str);
retour 0;


Dans l'exemple1.C, nous avons déclaré un tableau de caractères de taille 30. Ensuite, nous l'avons initialisé avec la chaîne «ABCD EFGH."Dans la fonction memset, nous avons passé 3 arguments Str, 'x' et 3. Ainsi, le bloc de mémoire pointé par STR sera réinitialisé les 3 premiers caractères par 'x.'Après Memset, lorsque nous imprimerons la mémoire, nous obtiendrons «xxxd efgh."

// Exemple2.c
#inclure
#inclure
int main()

char Str [30] = "ABCD EFGH";
printf ("avant memeset =>% s", str);
memset (str + 4, 'x', 3);
printf ("\ nafter memset =>% s \ n", str);
retour 0;


Dans l'exemple2.C, nous avons passé la fonction STR + 4 à Memset. Donc, il réinitialise la mémoire après le 4ème emplacement de Str. Après Memset, lorsque nous imprimerons la mémoire, nous obtiendrons «ABCDXXXGH."

// Exemple3.c
#inclure
#inclure
int main()

int arr [5], i;
memset (arr, 10,5 * sizeof (arr [0]));
printf ("\ nar elements => \ n");
pour (i = 0; i<5;i++)
printf ("% d \ t", arr [i]);
printf ("\ n");
retour 0;


Dans l'exemple3.C, nous avons déclaré un tableau entier de taille 5 et essayer de l'initialiser par 10. Mais à partir de la sortie, nous avons vu que le tableau n'est pas initialisé par 10; Au lieu de cela, nous avons la valeur «168430090». En effet. Maintenant, nous verrons comment nous obtiendrons la valeur «168430090».


La représentation binaire de 10 est 00000000 00000000 00000000 00001010.

Lorsque entier converti en char non signé, le 1 octet inférieur est considéré. Ainsi, lorsque 10 est converti en char non signé, c'est une représentation binaire est 00001010.

La fonction memset () définit l'octet d'emplacement de mémoire par octet. Ainsi, un total de 4 octets sera: 00001010 00001010 00001010 00001010.

La valeur décimale de la représentation binaire de 4 octets est 168430090.

// Exemple4.c
#inclure
#inclure
int main()

int arr [5], i;
memset (arr, 0,5 * sizeof (arr [0]));
printf ("\ nar elements => \ n");
pour (i = 0; i<5;i++)
printf ("% d \ t", arr [i]);
printf ("\ n");
retour 0;


Dans l'exemple4.C, nous avons initialisé le tableau entier de 0. Tous les bits de la représentation binaire de 0 sont 0. Donc le tableau est initialisé par 0.

// Exemple5.c
#inclure
#inclure
int main()

int arr [5], i;
memset (arr, -1,5 * sizeof (arr [0]));
printf ("\ nar elements => \ n");
pour (i = 0; i<5;i++)
printf ("% d \ t", arr [i]);
printf ("\ n");
retour 0;


Dans l'exemple5.C, nous avons initialisé le tableau entier de 0. Tous les bits de la représentation binaire de -1 sont 1. Donc le tableau est initialisé par -1.

Conclusion:

Dans cet article, nous avons vu en utilisant la fonction MEMSET comment nous pouvons initialiser ou définir efficacement la valeur d'un bloc de mémoire. Nous pouvons définir n'importe quel caractère et 0 ou -1 comme valeur entière sur un bloc de mémoire. La fonction MEMSET est plus rapide pour définir un grand morceau de mémoire contigu par rapport à la simple définition de l'emplacement à l'aide d'une boucle.