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?
![Glad](images/smileys/glad.gif)
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.