Si los datos son una variable estática o global, se rellenan con ceros de forma predeterminada, así que simplemente declare myStruct _m;
Si los datos son una variable local o una zona asignada al montón, bórrelos con algo memset
así:
memset(&m, 0, sizeof(myStruct));
Los compiladores actuales (por ejemplo, versiones recientes de gcc
) optimizan eso bastante bien en la práctica. Esto funciona solo si todos los valores cero (incluidos los punteros nulos y el punto flotante cero) se representan como todos los bits cero, lo cual es cierto en todas las plataformas que conozco (pero el estándar C permite implementaciones donde esto es falso; no conozco tal implementación) .
Quizás podría codificar myStruct m = {};
o myStruct m = {0};
(incluso si el primer miembro de myStruct
no es un escalar).
Mi sensación es que usar memset
para estructuras locales es lo mejor, y transmite mejor el hecho de que en tiempo de ejecución, algo debe hacerse (mientras que, por lo general, los datos globales y estáticos pueden entenderse como inicializados en tiempo de compilación, sin ningún costo en tiempo de ejecución) .
= {};
Sin embargo, no estoy seguro de si esto es válido.