C ko‘rsatkichlar (pointers)
Ko‘rsatkichlarni yaratish
Oldingi bobda o‘zgaruvchining xotira manzilini havola operatori & yordamida olish mumkinligini bilib oldingiz:
Misol
int myAge = 43; // an int variable
printf("%d", myAge); // Outputs the value of myAge (43)
printf("%p", &myAge); // Outputs the memory address of myAge (0x7ffe5367e044)
O‘zingiz sinab ko‘ring »
Ko‘rsatkich (pointer) — boshqa o‘zgaruvchining xotira manzilini o‘z qiymati sifatida saqlaydigan o‘zgaruvchi.
Ko‘rsatkich o‘zgaruvchisi o‘zi bilan bir xil tipdagi ma’lumot tipiga (masalan, int) ishora qiladi va * operatori yordamida yaratiladi.
Siz ishlayotgan o‘zgaruvchining manzili ko‘rsatkichga o‘zlashtiriladi:
Misol
int myAge = 43; // An int variable
int* ptr = &myAge; // A pointer variable, with the name ptr, that stores the address of myAge
// Output the value of myAge (43)
printf("%d\n", myAge);
// Output the memory address of myAge (0x7ffe5367e044)
printf("%p\n", &myAge);
// Output the memory address of myAge with the pointer (0x7ffe5367e044)
printf("%p\n", ptr);
O‘zingiz sinab ko‘ring »
Misol izohi
int tipidagi o‘zgaruvchiga (myAge) ishora qiluvchi ptr nomli ko‘rsatkich o‘zgaruvchisini yarating. E’tibor bering, ko‘rsatkichning tipi siz ishlayotgan o‘zgaruvchining tipiga mos kelishi kerak (bizning misolimizda int).
myAge o‘zgaruvchisining xotira manzilini saqlash uchun & operatoridan foydalaning va uni ko‘rsatkichga o‘zlashtiring.
Endi ptr myAge o‘zgaruvchisining xotira manzilini qiymat sifatida saqlaydi.
Dereference (qiymatni olish)
Yuqoridagi misolda o‘zgaruvchining xotira manzilini olish uchun ko‘rsatkich o‘zgaruvchisidan foydalandik (& havola (reference) operatori bilan birga).
Shuningdek, * operatori (dereference operatori) yordamida ko‘rsatkich ishora qilayotgan o‘zgaruvchining qiymatini ham olishingiz mumkin:
Misol
int myAge = 43; // Variable declaration
int* ptr = &myAge; // Pointer declaration
// Reference: Output the memory address of myAge with the pointer (0x7ffe5367e044)
printf("%p\n", ptr);
// Dereference: Output the value of myAge with the pointer (43)
printf("%d\n", *ptr);
O‘zingiz sinab ko‘ring »
E’tibor bering, bu yerda * belgisi chalkashlik tug‘dirishi mumkin, chunki u kodimizda ikki xil vazifani bajaradi:
- E’lon qilishda ishlatilganda (
int* ptr), u ko‘rsatkich o‘zgaruvchisini yaratadi. - E’lon qilishdan tashqarida ishlatilganda, u dereference operatori vazifasini bajaradi.
Bilish foydali: C tilida ko‘rsatkich o‘zgaruvchilarini e’lon qilishning ikki usuli bor:
int* myNum;
int *myNum;
Ko‘rsatkichlar haqida eslatmalar
Ko‘rsatkichlar C tilini Python va Java kabi boshqa dasturlash tillaridan ajratib turadigan jihatlardan biridir.
Ular C tilida muhim, chunki kompyuter xotirasidagi ma’lumotlarni boshqarish imkonini beradi. Bu kodni qisqartirishi va unumdorlikni oshirishi mumkin. Agar ro‘yxatlar, daraxtlar va graflar kabi ma’lumotlar tuzilmalari bilan tanish bo‘lsangiz, ko‘rsatkichlar ularni amalga oshirishda ayniqsa foydali ekanini bilishingiz kerak. Ba’zan esa ko‘rsatkichlardan foydalanishga majbur bo‘lasiz, masalan, fayllar bilan ishlashda va xotirani boshqarishda.
Lekin ehtiyot bo‘ling: ko‘rsatkichlar bilan ehtiyotkorlik bilan ishlash kerak, chunki boshqa xotira manzillarida saqlangan ma’lumotlarni buzib qo‘yish mumkin.
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
