c++ - sirve - memset linux
¿De qué sirve el valor de retorno memset()? (4)
La firma está en línea con todas las otras funciones similares: memcpy()
, strcpy()
etc. Siempre pensé que esto se hizo para permitir a uno encadenar llamadas a tales funciones, y para usar tales llamadas en expresiones.
Dicho esto, nunca me he encontrado con una situación en el mundo real en la que me sintiera obligado a usar el valor de retorno de esa manera.
memset()
se declara como void*
que siempre es el mismo valor que la dirección que se pasa a la función.
¿De qué sirve el valor de retorno? ¿Por qué no vuelve void
?
Me encontré con esta pregunta cuando busqué en Google para ver lo que memset devuelto.
Tengo un código en el que pruebo para un valor, luego, si esa es la prueba verdadera para ver si un valor es cero.
Debido a que no hay una forma completamente portátil en C para probar los ceros, tengo que ejecutar memset en el medio.
Entonces mi código es:
if ( a==true && (memcmp(memset(zeros, 0, sizeof(zeros)), b, sizeof(zeros)) == 0) )
Esto habla del propósito de encadenamiento enumerado en las preguntas anteriores, pero es un ejemplo de uso de esta técnica.
Dejaré que otros juzguen si esto es bueno o no.
Para usar la función como argumento para otra función como sprintf
Se puede usar para el encadenamiento de llamadas como:
char a[200];
strcpy(memset(a, 0, 200), "bla");