... er i mine øjne ikke intuitivt. Jeg vil gerne bede experterne give eksempler på hvornår ** er nyttigt, og hvad alternativerne er. Det er selvfølgelig afhængigt af situation (sådan er det jo altid), så derfor søger jeg både generelle og spcifikke eksempler samt gode forklaringer. Et link eller to er heller ikke af vejen, men helst ikke til sider der bare beskriver pointere etc. (Dagens tidligere spm. om arrays i funktioner, hvorunder ** blev nævnt, bidrog ikke til min forståelse).
Hej alle, tak fordi I prøvede. Det er stadig helt sort. Arne-V's svar er utvivlsomt velkvalificeret, men mangler nok visse spor af pædagogik. Jeg er ikke på det niveau. DS-linket hjalp heller ikke. Jeg har mødt muren her, og det er trods alt ikke fordi jeg ikke gider læse.
BB, jeg beklager jeg ikke fik fortalt at jeg kun kan programmere noget i C, ikke C++. Din kode er trodsalt alligevel nogenlunde læsbar for mig, men jeg forstår ikke princippet bag ** overhovedet. Kunne måske være godt om de enkelt linjer var kommenteret...
X er en pointer til nogle integers. p er en pointer til en pointer til nogle integers? Eller p er en pointer til en pointer til nogle integer pointers (hvorfor det ene og ikke det andet?)??? Hvorfor ikke "int **p = new int [4]"? p[n]=new int [5] => vi sætter det n'te p til at pege på 5 nye integers eller hva?? osv. osv. Overordnet kommentar ønsket til kodeeksemplet: Vi bruger denne strategi fordi sådan og sådan og alternativet var at gøre dette og dette, men det ville væremere besværligt fordi det og det og blah.
Jeg har som sagt brug for blot at se verdens mest simple eksempel på at ** bruges til noget som ikke -eller blot mere besværligt- kunne have lavet vha alternativerne.
Hvis du opretter et array med 'new', kommer det til at ligge et sted i hukommelsen (heap'en). Hvis det er et array af int's, kan du henvise (pege på) det med:
int* pIntArray;
Men hvis array'et ikke bare indeholder int's, men også array's af int (hvilket igen 'peges på', bruger man:
Hvis du ønsker at have: void Foo(int i, int j) { int Array[x][y];
Er du nødt til at lave Array som en int **, og bruge metoden fra p fra før til at allokere plads.
Hvis du vil have: void bar(int i) { int Array[10][i];
Kan du lave det som:
void bar(int i) { int *Array[10]; int x; for(x = 0; x < 10; k++) Array[x] = malloc(i*sizeof(int));
Her er Array et array af pointere.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.