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 memsetasí:
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 myStructno es un escalar).
Mi sensación es que usar memsetpara 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.