Opgaver i denne lektion   Gå til annoteret slide, hvor denne opgave er tilknyttet -- Tastaturgenvej: 'u'   Alfabetisk indeks   Kursets hjemmeside   

Opgaveløsning:
En pointer øvelse


int    i = 3, j = 5, *p = &i, *q = &j, *r;
double x
Udtrykket    p == &i    har værdien    1.
Fordi vi sammenligner værdierne af p (en pointer) og værdien af &i, som også er en pointer. De peger på det sammen, ergo er de ens. Boolean true er 1.

Udtrykket    p = i + 7    er illegal.
Fordi typen af p er en pointer til int. Typen af i + 7 er int. Disse typer er forskellige.

Udtrykket    * * & p    har værdien    3.
Fordi &p er en pointer til en pointer til 3. Når den derefereres to gange får vi værdien 3.

Udtrykket    r = & x    er illegal.
Fordi r er en pointer til en int, x er en pointer til en double. Disse er uforenelige i C.

Udtrykket    7 * * p / * q + 7    har værdien    11.
Fordi == 7 * 3 / 5 + 7 == (7 * 3) / 5 + 7 == 21 / 5 + 7 = 4 + 7 = 11

Udtrykket    * (r = & j) *= * p    har værdien    15.
Fordi venstresiden af *= er svarer til j. Højresiden er 3. Derfor svarer udtrykket til j *= 3, hvilket assigner 15 til j. Og returnerer 15.