Programación en C

Cómo se usa la función Memset

Cómo se usa la función Memset

En C, la función memset () se usa para establecer un valor de un byte en un bloque de memoria byte por byte. Esta función es útil para la inicialización de un bloque de memoria byte a byte por un valor particular. En este artículo veremos en detalle cómo se puede utilizar esta función. Entonces empecemos.

Archivo de cabecera:

1
cuerda.h

Sintaxis:

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

Esta función establece la primera norte bytes del bloque de memoria apuntado por str por ch.

Argumentos:

La función toma 3 argumentos:

  1. str: Este es el puntero de la ubicación de la memoria donde se configurará la memoria. Este es un puntero vacío, por lo que podemos configurar cualquier tipo de bloque de memoria, pero la memoria se configurará byte por byte.
  2. ch: Este es el valor que se va a copiar al bloque de memoria. Este es un valor entero, pero se convierte en un carácter sin signo antes de copiarlo.
  3. norte: Este es el número de bytes en el bloque de memoria que se establece.

Valores devueltos:

memset () devuelve la primera dirección del bloque de memoria desde donde comienza a establecer el valor.

Ejemplos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
dieciséis
//Ejemplo 1.C
#incluir
#incluir
int main ()

char str [30] = "ABCD EFGH";
printf ("Antes de memset =>% s", str);
memset (cadena, 'x', 3);
printf ("\ nDespués de memset =>% s \ n", str);
return 0;


En Example1.c, hemos declarado una matriz de caracteres de tamaño 30. Luego lo hemos inicializado con la cadena “ABCD EFGH.”En la función memset, hemos pasado 3 argumentos str, 'x' y 3. Entonces, el bloque de memoria señalado por str se restablecerá los primeros 3 caracteres por 'x.'Después de memset, cuando imprimimos la memoria, obtendremos “xxxD EFGH."

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
dieciséis
// Ejemplo2.C
#incluir
#incluir
int main ()

char str [30] = "ABCD EFGH";
printf ("Antes de memset =>% s", str);
memset (str + 4, 'x', 3);
printf ("\ nDespués de memset =>% s \ n", str);
return 0;


En Example2.c, hemos pasado str + 4 a la función memset. Entonces, restableció la memoria después de la cuarta ubicación de str.  Después de memset, cuando imprimimos la memoria, obtendremos “ABCDxxxGH."

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
dieciséis
17
18
// Ejemplo3.C
#incluir
#incluir
int main ()

int arr [5], i;
memset (arr, 10,5 * tamaño de (arr [0]));
printf ("\ narr Elementos => \ n");
para (i = 0; i<5;i++)
printf ("% d \ t", arr [i]);
printf ("\ n");
return 0;


En Example3.c, hemos declarado una matriz de enteros de tamaño 5 e intentamos inicializarla por 10. Pero a partir de la salida, hemos visto que la matriz no se inicializa con 10; en su lugar, tenemos el valor "168430090". Esto se debe a que el valor entero es mayor que un byte y la función memset convierte el valor en un carácter sin signo antes de copiarlo. Ahora veremos cómo obtendremos el valor "168430090".


La representación binaria de 10 es 00000000 00000000 00000000 00001010.

Cuando un entero se convierte en un carácter sin firmar, se considera el byte inferior 1. Entonces, cuando 10 se convierte en un carácter sin firmar, es una representación binaria es 00001010.

La función memset () establece la ubicación de la memoria byte por byte. Entonces, un total de 4 bytes será: 00001010 00001010 00001010 00001010.

El valor decimal de la representación binaria de 4 bytes es 168430090.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
dieciséis
17
18
// Ejemplo4.C
#incluir
#incluir
int main ()

int arr [5], i;
memset (arr, 0,5 * tamaño de (arr [0]));
printf ("\ narr Elementos => \ n");
para (i = 0; i<5;i++)
printf ("% d \ t", arr [i]);
printf ("\ n");
return 0;


En Example4.c, hemos inicializado la matriz de enteros en 0. Todos los bits de la representación binaria de 0 son 0. Entonces la matriz se inicializa en 0.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
dieciséis
17
18
19
// Ejemplo5.C
#incluir
#incluir
int main ()

int arr [5], i;
memset (arr, -1,5 * tamaño de (arr [0]));
printf ("\ narr Elementos => \ n");
para (i = 0; i<5;i++)
printf ("% d \ t", arr [i]);
printf ("\ n");
return 0;


En Example5.c, hemos inicializado la matriz de enteros en 0. Todos los bits de la representación binaria de -1 son 1. Entonces la matriz se inicializa con -1.

Conclusión:

En este artículo, hemos visto al usar la función memset cómo podemos inicializar o establecer el valor de un bloque de memoria de manera eficiente. Podemos establecer cualquier carácter y 0 o -1 como valor entero en un bloque de memoria. La función Memset es más rápida para configurar una gran cantidad de memoria contigua en comparación con simplemente configurar la ubicación mediante un bucle.

Tutorial de Shadow of the Tomb Raider para Linux
Shadow of the Tomb Raider es la duodécima incorporación a la serie Tomb Raider, una franquicia de juegos de acción y aventuras creada por Eidos Montre...
Cómo impulsar FPS en Linux?
FPS significa Cuadros por segundo. La tarea de FPS es medir la velocidad de fotogramas en reproducciones de video o actuaciones de juegos. En palabras...
Los mejores juegos de Oculus App Lab
Si es propietario de un visor Oculus, debe estar informado sobre la descarga lateral. Sideloading es el proceso de instalación de contenido que no es ...