Avatar billede svinth Nybegynder
16. maj 2002 - 10:29 Der er 12 kommentarer og
1 løsning

Struct bloktildeling

Hej C'ere.

Hvordan kan jeg fylde en struct på listeform eller lignende?
Altså et eller andet a'la:

MinStruct = {123,456,"test"};

?
Avatar billede chries Nybegynder
16. maj 2002 - 10:35 #1
Jeg er meget sikker på du ikke kan i C.
Avatar billede svinth Nybegynder
16. maj 2002 - 10:36 #2
I C++ måske?
Avatar billede chries Nybegynder
16. maj 2002 - 10:38 #3
i C++ kan du lave constructor og operator= i stucts.

og derved gøre:

MinStruct[128] = { MinStruct(123,456,"test"), MinStruct(789,112,"test2") }
Avatar billede chries Nybegynder
16. maj 2002 - 10:38 #4
(har ikke testet det)
Avatar billede chries Nybegynder
16. maj 2002 - 10:42 #5
ups, man kan vist godt initialisere struct i C.
Avatar billede chries Nybegynder
16. maj 2002 - 10:42 #6
Her er et eksempel

struct init
{
  char *fname;
  double (*fnct)();
};

struct init arith_fncts[]
  = {
      "sin", sin,
      "cos", cos,
      "atan", atan,
      "ln", log,
      "exp", exp,
      "sqrt", sqrt,
      0, 0
    };
Avatar billede chries Nybegynder
16. maj 2002 - 10:46 #7
her er et jeg selv har lavet =)

#include <iostream.h>

struct Test
{
    int i;
    char str[128];
};

int main(int argc, char* argv[])
{
    struct Test t[] = { 1, "ost",  2, "ost2" };

    cout << t[0].i << " - " << t[0].str << endl;
    cout << t[1].i << " - " << t[1].str << endl;


    return 0;
}
Avatar billede svinth Nybegynder
16. maj 2002 - 10:46 #8
Ok, men kan man andet end at initialisere, altså fylde nye værdier i på et senere tidspunkt?
Avatar billede chries Nybegynder
16. maj 2002 - 10:47 #9
med mindre du erklærer noget for const, kan du godt:

    struct Test t[] = { 1, "ost",  2, "ost2" };

    t[0].i = 10;

    cout << t[0].i << " - " << t[0].str << endl;
Avatar billede svinth Nybegynder
16. maj 2002 - 10:51 #10
Det er stadig i erklæringen i ovenstående eksempel, kan man senere?
Avatar billede chries Nybegynder
16. maj 2002 - 10:57 #11
er ikke sikker på hvad du mener ? du kan "tildele" til enhver tid.

    struct Test t[10] = { 1, "ost",  2, "ost2" };

    t[0].i = 0;
    t[1].i = 1;
    t[2].i = 2;
    t[3].i = 3;
    t[4].i = 4;

    cout << t[0].i << " - " << t[0].str << endl;
    cout << t[1].i << " - " << t[1].str << endl;

    t[5].i = 5;
    t[6].i = 6;
    t[7].i = 7;
    t[8].i = 8;

    strcpy( t[8].str, "Ost8" );

    cout << t[8].i << " - " << t[8].str << endl;
Avatar billede svinth Nybegynder
16. maj 2002 - 11:00 #12
Ja, man kan tildele til enhver tid, men ikke i listeform, som jeg initielt ønskede? Det kan vel kun når man erklærer sin struct?
Avatar billede chries Nybegynder
16. maj 2002 - 11:11 #13
nåå, sådan :-) ja det har du ret i, { } virker kun i reklærings øjeblikket.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester