Mange tak for hjælpen. Det virker upåklageligt.
"Bertel Lund Hansen" <skrivtil@lundhansen.dk> skrev i en meddelelse
news:kehjrt8chke7kmbg760uiufc6hmartkc2s@news.stofanet.dk...
> Jesper Winther Larsen skrev:
>
> >> Opret et array af pointere som dynamisk allokeres som pointere
> >> til et array. Så kan du endda lave et 'takket' array.
>
> >Hvordan gøres det egentlig i praksis???
>
> Her er svar på det og Rasmus' spørgsmål i en mail. Jeg svarer ellers gerne
> på spørgsmål i mail, men netop dette her hører (stadig) hjemme i
> debatgruppen:
>
> enum { ROWS = 10, COLS = 5};
>
> int **array2d;
>
>
> int main () {
> int nr, n;
> // Reserver plads til en pointer for hver række.
> array2d=(int**) malloc(sizeof(int*)*ROWS);
>
> // Reserver plads til en stribe integers,
> // og lad rækkepointeren pege på hver stribe.
> for (nr=0; nr<ROWS; ++nr) {
> array2d[nr]=(int*) malloc(sizeof(int)*COLS);
> }
>
> // Fyld alle pladserne op med tal som eksempel.
> for (nr=0; nr<ROWS; ++nr)
> for (n=0; n<COLS; ++n)
> array2d[nr][n]=nr*100+n;
>
> // Udskriv en tabel.
> for (nr=0; nr<ROWS; ++nr) {
> for (n=0; n<COLS; ++n) printf("%2i %2i %5i ",nr,n,array2d[nr][n]);
> printf("\n");
>
> }
> free(array2d);
> return 0;
> }
>
> Med "takket array" (eng. "jagged array") mener jeg at man ikke er bundet
til
> at give alle rækkerne lige mange elementer, men det skal naturligvis
styres
> lidt anderledes.
>
> --
> Bertel
>
http://lundhansen.dk/bertel/ FIDUSO:
http://fiduso.dk/