Avatar billede jnh Nybegynder
01. februar 2005 - 16:08 Der er 9 kommentarer og
1 løsning

Structs og arrays i C

Jeg sidder og kæmper med en struct, der skal indeholde et array. Det er jo nemt nok...

struct bus
{
int numberList[];
...
}

men er det lovligt at benytte en tom angivelse af størrelsen på arrayet? og hvordan sætter jeg størrelsen efterfølgende?

//Jesper
Avatar billede arne_v Ekspert
01. februar 2005 - 16:11 #1
Nej. Ikke i standard C.

Brug:

struct bus
{
int *numberList;
...
}

og lav en:

minbus.numberList = (int *)malloc(117*sizeof(int));

senere
Avatar billede jnh Nybegynder
01. februar 2005 - 16:28 #2
hvorfor lige 117?

og er det samme procedure, hvis jeg vil lave et array af strenge?

altså
struct bus
{
int **numberList;
...
}
minbus.numberList = (char *)malloc(117*sizeof(char));

//Jesper
Avatar billede arne_v Ekspert
01. februar 2005 - 16:34 #3
Det var bare et tal jeg valgte. Du vælger det du skal bruge. Og du kan godt bruge
en variabel.
Avatar billede arne_v Ekspert
01. februar 2005 - 16:35 #4
Du kan lave en char* og malloc'e sådan en eller du kan lave en char** og
først malloc'e nogle char* og så malloc'e dem.
Avatar billede jnh Nybegynder
01. februar 2005 - 18:07 #5
Smid et svar :P

Tak for hjælpen!

//Jesper
Avatar billede arne_v Ekspert
01. februar 2005 - 18:18 #6
kommer her
Avatar billede jnh Nybegynder
02. februar 2005 - 09:01 #7
Weird...

Ligegyldigt hvad jeg indsætter i stedet for 117, så får jeg kun 4 pladser i integer-arrayet!

//Jesper
Avatar billede arne_v Ekspert
02. februar 2005 - 09:06 #8
Øh.

Hvordan tester du det ?

sizeof(minbus.numberList)

returnerer altid 4 (på 32 bit systemer), men det er fordi sizeof returnerer
størrelsen af pointeren ikke størrelsen af det som den peger på.
Avatar billede jnh Nybegynder
02. februar 2005 - 09:19 #9
Tak for hjælpen!

Fandt selv ud af det har blot tilføjet en variabel, der hedder size og så lavet en funktion, der klarer initialiseringen.

- hvordan er du blevet så klog Arne_v??? - jeg bliver imponeret hver gang!

//Jesper
Avatar billede arne_v Ekspert
02. februar 2005 - 09:31 #10
Jeg lærte at programmere i 1983 !

(Fortran iøvrigt)
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