Тоshkеnт ахborot техnоlоgiyаlari univеrsiтетi infоrматika kаfedrasi informatika fanidan
Download 284.5 Kb.
|
C
POINTER (ko'rsatkich) VA SATRLAR
C++ da ikki ko'rinishdagi ko'rsatkichlar - &-ko'rsatkichlar va pointerlar mavjuddir. Aslida bularning farqi faqat qo'llanilishi va ko'rinishida desak ham bo'ladi. Bu qismda biz C dan meros qolgan pointerlar bilan yaqindan tanishamiz. &-ko'rsatkichlarni biz o'tgan qismda ko'rgan edik. Pointerlar C/C++ dasturlash tillarining eng kuchli qurollaridandir. Lekin pointer tushunchasini anglash ham oson emas. Pointerlar yordamida funksiyalarning ko'rsatkich bo'yicha chaqirish mehanizmini amalga oshirish mumkin. Undan tashqari pointerlar yordamida dinamik strukturalar – stek (stack), ro'yhat (list), navbat (queue) va darahtlar (tree) tuzish mumkin. Undan tashqari pointer, satr va massivlar orasida yaqin aloqa bordir. Satr va massivlarni pointerlar yordamida berish bizga C dan meros bo'lob qoldi. Keyingi boblarda biz satr va massivlarni to'la qonli ob'ekt sifatida qo'lga olamiz. Pointerlar qiymat sifatida hotira adreslarini oladilar. Oddiy o'zgaruvchilar ma'lum bir qiymatga ega bo'lgan bir paytda, pointerlar boshqa bir o'zgaruvchining adresini o'z ichlariga oladilar. Shunda o'zgaruvchi bevosita qiymatga ko'rsatib tursa, pointer qiymatga bilvosita ko'rsatadi. Pointer e'lonida, pointer ismidan oldin '*' (yulduzcha, ko'paytiruv) belgisi qo'yilishi kerak. Misolda ko'raylik: char *charPtr, c = 8, *pc, ff[] = "IcyCool"; Bu yerda charPtr va pc lar char tipidagi ko'rsatkichlardir. Yani, charPtr ni "char tipidagi oz'garuvchiga ga ko'rsatkich" deb o'qisak bo'ladi. Ko'rsatkich sifatida e'lon qilinayatgan har bir o'zgaruvchi ismi oldida '*' bo'lishi shartdir. Pointerlarni boshqa o'zgaruvchilar kabi e'lon davrida, yoki dastur ichida qiymat berish yordamida initsalizatsiya qilish mumkin. Pointerlar qiymat sifatida faqat o'zgaruvchi yoki ob'ektlarning adreslarini va NULL yoki 0 ni oladilar. NULL simvolik konstantasi int *iPtr, address = 0x45ad7 ; iPtr = (int *) address; // C uslubida tiplarni keltirish iPtr = static_cast Lekin, albatta, yuqoridagi yozganimizni kamdam-kam qo'llashga to'g'ri kelsa kerak, chunki adres olishning soddaroq yo'llari bordir. Aslida, pointer e'lon qilinsa-yu lekin hali qo'llanilmayatgan bo'lsa, unga 0 qiymatini berish tavsiya etiladi. Chunki, agar biz bu 0 qiymatli pointerni bilmasdan qo'llamoqchi bo'lsak, kompilyator hato beradi, bunga sabab odatda operatsiyon sistemalar 0 adresli hotira maydoni bilan ishlashga ruhsat bermaydilar. Shu tariqa qiymatsiz pointer qo'llanilganidan ogoh bo'lamiz. Download 284.5 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling