Den Sat, 11 Feb 2006 11:09:32 +0100 skrev Paminu:
> Hvis man ønsker at lave dynamisk lager allokering svarer det så ikke til at
> man bare tager input fra brugeren?
>
> int main(void)
> {
> int num;
> printf("Enter number: ");
> scanf("%d", &num);
>
> int *ip;
> ip = malloc(sizeof(int)*num);
>
> return 0;
>
> }
>
> Eller ligge det noget mere i Dynamisk?
Hvor tit ved brugeren hvor meget plads programmet har brug for?
Lad os bruge Word som eksempel. Kunne du forestille dig Word spørge
hvor mange bogstaver du ville skrive idag?
For ikke at løbe
tør for plads til flere bogstaver, gør et program som Word det at
når side 1 er fyldt op, så allokerer den side mere, og igen når
side 2 er fyldt op... (Eller en linie ad gangen, eller et afsnit,
det behøver ikke være en side).
For at gøre det har man brug for en dynamisk datastruktur. I C++ findes
der fx den indbyggede std::vector, men det ser ud som om det er C du
vil lære, og der er man nødt til at lave det hele selv.
Du skal nok starte med en enkelt-kædet liste, det er vist den mest
simple dynamiske datastruktur. Den er forklaret i næsten en
hvilkensomhelst bog om programmering, det behøver ikke engang være
en bog om C, en kædet liste kan implementeres i næsten et
hvilketsomhelst sprog. Dog kræver det vist at sproget har pointere
og en malloc/new-lignende funktion, men sprog uden pointere
plejer så at have indbyggede dynamiske strukturer.
Mvh
Kent
--
Hard work may pay off in the long run, but laziness pays off right now.