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.
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
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.