I if parentesen svarer allocbuf til index 0. Man ligger så ALLOCSIZE til index 0 og ender derfor på det sidste index i listen (index 9999). Dernæste trækker man allocp fra (som ved første kørsel svarer til index 0) og får derfor 9999. Hvis n så fx er 10 så evaluere if sætningen til sand.
Er denne gennemgang korrekt?
Jeg kan ikke forstå hvorfor allocp svarer til index 0. Når der i starten skrives:
static char *allocp = allocbuf;
så betyder dette vel bare at *allocp er ligmed indholdet på index 0 i allocbuf listen.
Normalt vil man vel skriver:
allocp = allocbuf;
for at angive at allocp peger på det første element i listen.
AI bliver først for alvor en del af arbejdet, når teknologien integreres i den måde, vi arbejder på. At have adgang til AI betyder ikke nødvendigvis, at medarbejderne er klar til at bruge den.
Når du erklærer et array, så har du egentlig kun en pointer til det første element, så når du skriver static char *allocp = allocbuf, så erklærer du en char pointer, der peger på første element (index 0) i arrayet allocbuf
det der forvirrer dig er muligvis at et array er det samme som en pointer... dvs flg er ækvivalente:
char * tjek = new char[100]; char tjek[100];
du kan få fat i char nr 40 i dem begge to med tjek[39] - og du kan få en pointer til char nr 1 i begge to med bare tjek - ligesom du kan lave pointere til en hvilken som helst char i arrayet med tjek + n - og det er det der sker i dit eksempel der, der bliver bare lavet fræk pointeraritmetik fordi sådan er Kernighan og Ritchie, de ka ik la vær
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.