11. oktober 2005 - 20:45
Der er
14 kommentarer og 1 løsning
Variabel størrelse på et globalt array?
Er det ikke muligt i C at specificere størrelsen på et globalt array når main køres? tænkte på noget i stil med: int z; int a[z]; int main() { printf("Enter the size of array a: "); c = getchar(); z = c; return 1; } Dette virker ikke, men er der en anden måde at gøre det på??
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
11. oktober 2005 - 20:51
#1
jo #include <stdio.h> #include <stdlib.h> #include <string.h> int *a; int main() { int z; /* indlæs z */ a = (int *)malloc(z*sizeof(int)); /* brug a */ free(a); return 1; }
11. oktober 2005 - 20:51
#2
c = getchar(); z = c; giver iøvrigt 41 hvis du taster '1'
11. oktober 2005 - 21:17
#3
Ok men det er kun muligt hvis man anvender pointers og malloc??
11. oktober 2005 - 21:19
#4
ja
11. oktober 2005 - 21:30
#5
men jeg kan stadig ikke få det til at du: int *d; struct test { int a; int b; }; struct test array[d]; int main() { int o; int c; c = getchar(); o = c; d = (int *)malloc(o*sizeof(int)); free(d); return 1; } Det er jo som sagt størrelsen på et array jeg vil sætte udfra hvad brugeren indtaster.
11. oktober 2005 - 21:33
#6
mener du: struct test { int a; int b; }; struct test *array; og array = (array *)malloc(o * sizeof(struct test)); ... free(array); eller ??
11. oktober 2005 - 21:42
#7
det er måske det jeg mener. Men jeg troede bare man kunne lave et "normalt" array globalt: struct test array[d]; Hvor man på en eller lader brugeren angive d når main køres vha. getchar(). Men det er måske kun muligt at lave det som et: "struct test *;" i stedet for "struct test array[d];" ?
11. oktober 2005 - 21:46
#8
pladsen til globale variable skal afsættes på compile tidspunkt
11. oktober 2005 - 21:46
#9
en compiler som ikke bekymrer sig om størrelsen på EXE vil faktisk allokere pladsen i EXE filen (men jeg tror de fleste bare gemmer oplysninger om at her skal der afsættes 2000 bytes)
11. oktober 2005 - 21:50
#10
Det forstod jeg ikke meget af. Men jeg går udfra at det er umuigt på den måde som jeg troede det skulle kunne lade sig gøre. Iøvrigt mente du ikke: array = (struct test *)malloc(o * sizeof(struct test)); i stedet for: array = (array *)malloc(o * sizeof(struct test)); Det sidste her giver i hvert fald en fejl.
11. oktober 2005 - 21:52
#11
jo det var en oopser
11. oktober 2005 - 21:55
#12
ok, det er vel en god ide at vente med at kalde "free" hvis jeg ønkser at bruge denne pointer i nogle forskellige funktioner før programmet skal terminerer?
11. oktober 2005 - 21:57
#13
ja meget efter free genbruges pladsen til andre variable !
11. oktober 2005 - 22:00
#14
du skal have tak for hjælpen. bare lig et svar
11. oktober 2005 - 22:02
#15
svar
Kurser inden for grundlæggende programmering