Ko‘rsatkichga ko‘rsatkich
Ko‘rsatkichga ko‘rsatkich
Shuningdek, boshqa ko‘rsatkichga ishora qiluvchi ko‘rsatkich ham bo‘lishi mumkin. Bu ko‘rsatkichga ko‘rsatkich (yoki "qo‘sh ko‘rsatkich", double pointer) deb ataladi.
Avvaliga bu chalkash tuyulishi mumkin, lekin bu shunchaki bilvosita murojaatning yana bir darajasi: boshqa ko‘rsatkichning manzilini saqlaydigan ko‘rsatkich.
Buni shunday tasavvur qiling: Oddiy ko‘rsatkich ustiga manzil yozilgan qog‘ozga o‘xshaydi. Ko‘rsatkichga ko‘rsatkich esa o‘sha birinchi qog‘oz qayerda saqlanayotganini aytadigan boshqa bir qog‘ozga o‘xshaydi.
Eslatma: Boshlovchi sifatida ko‘rsatkichga ko‘rsatkichdan tez-tez foydalanishingiz shart emas. Biroq uni murakkabroq dasturlarda uchratishingiz mumkin, shuning uchun u nimani anglatishi va qanday ishlashini tushunib olgan ma’qul.
Bu qanday ishlashini tushunish uchun oddiy misolni ko‘rib chiqaylik:
Misol
int myNum = 10; // normal variable
int *ptr = &myNum; // pointer to int
int **pptr = &ptr; // pointer to pointer
printf("myNum = %d\n", myNum);
printf("*ptr = %d\n", *ptr);
printf("**pptr = %d\n", **pptr);
Natija:
myNum = 10
*ptr = 10
**pptr = 10
Qadam-baqadam quyidagilar sodir bo‘ladi:
myNum10qiymatini saqlaydi.ptrmyNumo‘zgaruvchisining manzilini saqlaydi.pptrptro‘zgaruvchisining manzilini saqlaydi.*ptrmyNumo‘zgaruvchisining qiymatini beradi.**pptrham ikkala ko‘rsatkich orqali o‘tib,myNumo‘zgaruvchisining qiymatini beradi.
Demak:
*ptr=myNumqiymati**pptr= ikkala daraja orqali olinganmyNumqiymati
Ko‘rsatkichga ko‘rsatkich orqali qiymatlarni o‘zgartirish
**pptr asl o‘zgaruvchiga murojaat qilgani uchun undan o‘zgaruvchining qiymatini o‘zgartirishda ham foydalanishingiz mumkin:
Misol
int myNum = 5;
int *ptr = &myNum;
int **pptr = &ptr;
**pptr = 20; // changes myNum
printf("myNum = %d\n", myNum); // prints 20
Xulosa
- Ko‘rsatkichga ko‘rsatkich boshqa ko‘rsatkichning manzilini saqlaydi.
*ptro‘zgaruvchining qiymatini beradi.**pptrbilvosita murojaatning ikki darajasidan o‘tib, xuddi shu qiymatni beradi.- Ular ko‘rsatkichlarni funksiyalarga uzatishda yoki murakkab ma’lumotlar tuzilmalari bilan ishlashda foydali bo‘lishi mumkin.
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
