studio - memset función en lenguaje c
para que se utiliza memset en c (3)
Estoy estudiando la función memset ahora, pero todos los ejemplos se refieren a la matriz char de la siguiente manera:
char a[100];
memset(a, 0, 100);
pondrá a 0 todos los elementos de esta matriz de caracteres.
Me pregunto si memset puede aplicarse a int array o float array?
Para matrices de tamaño estático y de longitud variable, puede simplemente
<arbitrary-type> foo [...];
memset (foo, 0, sizeof (foo)); // sizeof() gives size of entity in bytes
Regla de oro: nunca codificar [tamaños de datos].
(Esto no funciona si pasa matrices como argumentos de función: Comportamiento de Sizeof en C )
Sí, se puede aplicar a cualquier búfer de memoria, pero debe ingresar el tamaño correcto del búfer de memoria ... memset
trata cualquier búfer de memoria como una serie de bytes, por lo tanto, si es char
, int
, float
, double
, etc. importar. No obstante, tenga en cuenta que no establecerá tipos de múltiples bytes en un valor específico distinto de cero ... por ejemplo:
int a[100];
memset(a, 1, sizeof(a));
no establecerá cada miembro de a en el valor 1 ... más bien establecerá cada byte en el búfer de memoria ocupado por a
a 1
, lo que significa que cada int
cuatro bytes se establecerá en el valor 0x01010101
, que no es el igual que 0x00000001
Se puede aplicar a cualquier matriz. El 100 al final es el tamaño en bytes, por lo que un entero sería de 4 bytes cada uno, por lo que sería
int a[100];
memset(a, 0, sizeof(a)); //sizeof(a) equals 400 bytes in this instance
¿Consíguelo? :)