У чым розніца паміж int * a; і int ** a; ў з?


адказ 1:

Выкажам здагадку

інт i;

int * a;

Int ** b;

Цяпер a - паказальнік, якi захоўвае i i адрас. Яго называюць паказальнікам, таму што ён паказвае на адрас тыпу.

int * a можа захоўваць адрас i, таму што гэта цэлая пераменная.

Зараз паглядзіце на int ** b, гэта паказальнік на паказальнік, які вы можаце праглядзець як int * (* b).

Прылада b захоўвае адрас a.

Да трох значэнняў можна прысвоіць наступныя значэнні:

i = 5;

а =?

b = & a;

Важна:

Пры друку i: 5 (значэнне) друкуецца.

Калі вы надрукуеце адзін: аддрукуецца адрас i.

Калі вы друкуеце *, надрукуецца а: 5 (значэнне).

калі вы хочаце надрукаваць b: надрукуецца адрас

Калі вы друкуеце * b, то адлюстроўваецца i i адрас

Калі вы друкуеце ** b: 5 (значэнне) друкуецца.


адказ 2:

Добры дзень, глядзіце схему і код ніжэй, вы атрымаеце свой адказ. Гэта на самай справе канцэпцыя паказальніка на паказальнік (канцэпцыя двайны паказальнік)

Адрас пераменнай колькасці: 1000

Адрас паказальніка ptr1: 2000

Адрас паказальніка ptr2: 3000

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

#include

Int main ()

{

int num = 10;

int * ptr1;

int ** ptr2;

ptr1 =?

ptr2 =?

printf ("значэнне num =% d \ n", num);

printf ("Значэнне даступна ў * ptr1 =% d \ n", * ptr1);

printf ("Значэнне даступна на ** ptr2 =% d \ n", ** ptr2);

}

Выданне:

Значэнне num = 10

Значэнне даступна па адрасе * ptr1 = 10

Значэнне, даступнае на ** ptr2 = 10