Kuo skiriasi int * a; ir int ** a; C?


Atsakymas 1:

Tarkime, imame

int i;

int * a;

int ** b;

Dabar a rodyklė, kurioje saugomas i adresas, jis vadinamas rodykle, nes jis nurodo adresą, kuris yra vienos rūšies….

int * a gali laikyti i adresą, nes tai yra sveikasis kintamasis.

Dabar pažvelkite į int ** b tai yra rodyklė į rodyklę, galite pažvelgti į ją kaip int * (* b) reiškia, kad tai rodyklė, kuri nurodys kitą sveikojo tipo rodyklę….

Priemonės b saugo a adresą.

Taigi mes galime priskirti reikšmes trims kintamiesiems kaip:

i = 5;

a = & i;

b = & a;

Svarbu:

jei spausdinsite i: bus atspausdinta 5 (vertė).

jei atspausdinsite: bus išspausdintas i adresas.

jei spausdinsite * a: bus išspausdinta 5 (vertė).

jei spausdinsite b: bus išspausdintas adresas

jei spausdinsite * b: bus išspausdintas i adresas

jei spausdinsite ** b: bus išspausdinta 5 (vertė).


Atsakymas 2:

Sveiki, žiūrėkite žemiau pateiktą schemą ir kodą, gausite atsakymą. Faktiškai tai yra rodyklės į rodyklę (dvigubos rodyklės) sąvokos

Kintamojo num adresas yra: 1000

Rodyklės ptr1 adresas yra: 2000

„Pointer ptr2“ adresas yra: 3000

// ———————- kodas ——————— //

# įtraukti

int pagrindinis ()

{

int num = 10;

int * ptr1;

int ** ptr2;

ptr1 = & num;

ptr2 = & ptr1;

printf ("num vertė =% d \ n", num);

printf („vertė pasiekiama * ptr1 =% d \ n“, * ptr1);

printf („Vertė pasiekiama ** ptr2 =% d \ n“, ** ptr2);

}

Išėjimas:

Numerio vertė = 10

Vertė pasiekiama * ptr1 = 10

Vertė pasiekiama ** ptr2 = 10