Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: quantumax9 en 12 Febrero 2019, 16:58 PM

Título: Estructuras: inicializar en ceros un array que es miembro de una estructura.
Publicado por: quantumax9 en 12 Febrero 2019, 16:58 PM

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
struct Clients{
       char nombre[50];
       char apellido[50];
       int DNI;
       char clase[1];
       int numberSeat;
       int plane1[10]={0,0,0,0,0,0,0,0,0,0};//ERROR. ¿POR QUÉ NO SE PUEDE INICILIZAR ASÍ????

       };

¿Cómo hago para inicializar el miembro array plane1 dentro de la definición de la estructura con ceros?
MENSAJE DEL COMPILADOR:
[Warning] no semicolon at end of struct or union
syntax error before '=' token

GRACIAS
Título: Re: Estructuras: inicializar en ceros un array que es miembro de una estructura.
Publicado por: MAFUS en 12 Febrero 2019, 18:11 PM
Porque una estructura sólo es un modelo. No puedes guardar nada hasta que no hagas una variable de ella.
Título: Re: Estructuras: inicializar en ceros un array que es miembro de una estructura.
Publicado por: ThunderCls en 12 Febrero 2019, 19:53 PM
1- En C++ 11 puedes hacer algo como:
Código (cpp) [Seleccionar]
struct Clients{
       char nombre[50] = {};
       char apellido[50] = {};
       int DNI;
       char clase[1];
       int numberSeat;
       int plane1[10] = {}; // inicializa a 0 todos los elementos
}


2- Puedes usar un constructor para tu estructura, aunque en este punto recomendaria que uses una clase:
Código (cpp) [Seleccionar]
struct Clients{
       char nombre[50];
       char apellido[50];
       int DNI;
       char clase[1];
       int numberSeat;
       int *plane1;
       Clients(){
           plane1 = new int[10]();
           // inicializa el resto
       }
};


3- Puedes usar la funcion:
   
Código (cpp) [Seleccionar]
memset(plane1, 0, sizeof(plane1));

4- Puedes usar un loop sobre cada elemento de tu array

5- Usa contenedores STL (vector, list, etc) en tu estructura

Saludos