/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
Bech_bb 500
kyllekylle 500
jdjespers.. 500
gibson 300
scootergr.. 300
molokyle 287
10  strarup 270
Dynmaisk lager allokering?
Fra : Paminu


Dato : 11-02-06 11:10

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?

 
 
Kent Friis (11-02-2006)
Kommentar
Fra : Kent Friis


Dato : 11-02-06 11:40

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.

Bertel Lund Hansen (11-02-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 11-02-06 16:30

Paminu skrev:

> Hvis man ønsker at lave dynamisk lager allokering svarer det så ikke til at
> man bare tager input fra brugeren?

Nej.

Det hedder dynamisk fordi det kan foregå under programmets
kontrol. Statisk allokering laves ved starten med faste
størrelser, og så enten spilder man enorme ressourcer eller også
løber man tør for plads.

Hvad man bruger dynamisk allokering til, kan være meget
forskelligt, men man lader ikke brugeren styre det (selv om det
er en teoretisk mulighed).

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Søg
Reklame
Statistik
Spørgsmål : 177428
Tips : 31962
Nyheder : 719565
Indlæg : 6407943
Brugere : 218877

Månedens bedste
Årets bedste
Sidste års bedste