desal escribió:Bueno el caso es que hago uso de por ejemplo ms->uno[0] antes de darle un valor y como no esta inicializado por ello me fallaba, si lo inicializo a 0 antes funciona bien, he intentado creame un contructor dentro del struct pero me marca error todo el rato y no puedo.
typedef struct mystruct{
mystruct():uno(0){}
uint8_t uno;
}mystruct;
Exacto. Si llamas a una dirección de memoria antes de inicializarla, puede contener cualquier cosa (y por pantalla puede mostrarte basura, un número cualquiera, etc).
En cuanto a un constructor, el struct es un tipo de dato y no tiene memoria asignada, ya que no es una instancia. Las instancias sí puedes inicializarlas. En C# (y creo que en C++ también) sí que hay constructores para los struct, pero en C no me suena.
Lo que puedes hacer es asignar un valor en cuanto instancies.
Por ejemplo
mystruct ff;
ff.uno[0]=0;
ff.uno[1]=0;
Si quieres, te puedes hacer una función que haga esto por ti, en caso de tener muchos parámetros a iniciar.
void InicializarMyStruct(mystruct *ff)
{
ff->uno[0]=0;
...
}