Hirdetés

Új hozzászólás Aktív témák

  • maestro87
    őstag

    emp.doj egy három elemű tömb, amit inicializálni csak akkor tudsz, amikor létrehozod az emp változót.

    Employee emp = {
    "John Sample", 0, 2500,
    {1, 1, 1970},
    {1, 1, 1970},
    {1, 1, 1970}
    };

    Külön inicializálni már nem tudod, csak értéket adhatsz neki. Illetve nem is neki, mert C-ben nincs tömbök közötti értékadás, hanem az elemeinek, mégpedig egy létező dátumot:

    date date0 = {1, 1, 1970};

    Ezután adhatsz értéket az emp.doj elemeinek.

    emp.doj[0] = date0;
    emp.doj[1] = date0;
    emp.doj[2] = date0;

    Itt segítségedre lehet a C99 compound literal:
    emp.doj[0] = (date){1, 1, 1970};

    Ha kinullázni szeretnéd egy struktúra adattagjait, akkor ez nem szabványos, normális fordító nem eszi meg:
    date date0 = {};

    Ez viszont igen:
    date date0 = {0};

    Így se jó, hogy külön adok az struktúra tömb elemeinek értéket. :(
    Ha kiveszem az értékadást, akkor lefordítja, más különben nem.
    Csak akkor jó ha egyesével adok minden legbelső elemnek is értéket, az meg nem játszik.

    Ez a C99 compound literal tulajdonképpen mire is jó?

Új hozzászólás Aktív témák