Hver er munurinn á int * a; og int ** a; í c?


svara 1:

Segjum sem svo að við tökum

int i;

int * a;

int ** b;

Núna er a bendill sem geymir heimilisfang i. Það er kallað bendill vegna þess að það bendir á heimilisfang sem er af gerðinni.

int * a getur geymt heimilisfang i því það er heiltala breytu.

Skoðaðu nú int ** b, það er vísir að bendil sem þú getur skoðað sem int * (* b).

Tækið b vistar heimilisfang a.

Við getum tengt eftirfarandi gildi við þrjár breytur:

i = 5;

a =?

b = & a;

Mikilvægt:

Þegar þú prentar er i: 5 (gildi) prentað.

Ef þú prentar eitt: netfang i er prentað.

Ef þú prentar * er a: 5 (gildi) prentað.

ef þú vilt prenta b: heimilisfang a er prentað

Ef þú prentar * b er heimilisfang i prentað

Ef þú prentar ** b: 5 (gildi) er prentað.


svara 2:

Halló, sjá skýringarmynd og kóða hér að neðan, þú munt fá svar þitt. Það er í raun hugmynd-til-bendill hugtak (tvöfalt vísbending hugtak)

Heimilisfang breytunnar num er: 1000

Heimilisfang bendilsins ptr1 er: 2000

Heimilisfang bendilinn ptr2 er: 3000

// ——————————————— //

# innifalið

int aðal ()

{

int num = 10;

int * ptr1;

int ** ptr2;

ptr1 =?

ptr2 =?

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

printf ("Gildi fáanlegt á * ptr1 =% d \ n", * ptr1);

printf ("Gildi fáanlegt á ** ptr2 =% d \ n", ** ptr2);

}

Útgáfa:

Gildi num = 10

Gildi fáanlegt á * ptr1 = 10

Gildi fáanlegt ** ptr2 = 10