Int * a o'rtasidagi farq nima? va int ** a; ichida?


javob bering 1:

Aytaylik, olamiz

int i;

int * a;

int ** b;

Endi a - bu i-ning manzilini saqlaydigan ko'rsatkich. U turga tegishli manzilga ishora qilganligi sababli ko'rsatgich deb ataladi.

int * a i ning manzilini saqlashi mumkin, chunki u butun o'zgaruvchi.

Endi int ** b ga qarang, u int * (* b) sifatida ko'rishingiz mumkin bo'lgan ko'rsatgichga ishora.

B qurilmasi a manzilini saqlaydi.

Uchta o'zgaruvchiga quyidagi qiymatlarni berishimiz mumkin:

i = 5;

a =?

b = & a;

Muhim:

Chop etganda, i: 5 (value) chop etiladi.

Agar siz bittasini chop qilsangiz: i-ning manzili bosilgan.

Agar siz * ni chop qilsangiz, a: 5 (qiymat) bosib chiqariladi.

Agar siz b ni chop etishni istasangiz, a: manzili bosilgan

Agar siz * b harfini bossangiz, i-ning manzili bosiladi

Agar siz ** b: 5 (qiymat) ni bosib chiqarsangiz, chop etiladi.


javob bering 2:

Salom, quyidagi diagramma va kodga qarang, siz javobingizni olasiz. Bu aslida pointer-pointer kontseptsiyasidir (ikki yo'nalishli tushuncha)

Nom o'zgaruvchisining manzili: 1000

Ptr1 ko'rsatgichining manzili: 2000

Ptr2 ko'rsatgichining manzili: 3000

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

# o'z ichiga oling

int main ()

{

int num = 10;

int * ptr1;

int ** ptr2;

ptr1 =?

ptr2 =?

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

printf ("Qiymat * ptr1 =% d \ n", * ptr1);

printf ("qiymat ** ptr2 =% d \ n", ** ptr2);

}

Nashr:

Qiymati = 10

Qiymat * ptr1 = 10 da

Qiymat ** ptr2 = 10 da mavjud