c++ 5-darslik

DOCX 8 стр. 21,9 КБ Бесплатная загрузка

Предварительный просмотр (5 стр.)

Прокрутите вниз 👇
1 / 8
c++ 5-darslik 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 …
2 / 8
ir, ammo c++ pointerga to'g'ridan-to'g'ri 0 qiymatini berish afzalroqdir, chunki agar null emas, 0 qiymati berilsa, ushbu qiymat avtomatik ravishda pointerning tipiga keltiriladi. butun sonlardan faqat 0 qiymati pointerga keltirilishsiz berilishi mumkin. agar ma'lum bir hotira adresini pointerga bermoqchi bo'lsak, quyidagicha yozishimiz mumkin: int *iptr, address = 0x45ad7 ; iptr = (int *) address; // c uslubida tiplarni keltirish iptr = static_cast (address); // c++ " " " 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. pointer operatorlari o'zgaruvchilarning (yani harqanday ob'ektning) adresini olishda biz & operatorini - adres olish operatorini qo'llaymiz. bu kontekstda & operatori …
3 / 8
on qilingan bo'lsa, u normal sharoitda faqat o'ng identefikatordir. bu ma'lumotlarni keltirganimizning sababi, & adres olish operatori faqat chap identefikator bo'la oladigan o'zgaruvchilarga nisbatan qo'llanilishi mumkin. agar o'zgaruvchi const sifatli konstantalarga, register sifatli o'zgaruvchilarga va ko'rsatkich qaytarmaydigan (adres qaytarmaydigan) ob'ektlarga nisbatan qo'llanilishi ta'qiqlanadi. faraz qilaylik, biz pointerimizga boshqa bir o'zgaruvchining adresini berdik. endi bizning pointerimiz ikki qiymatni ifoda etmoqda, biri bu o'zining qiymati, yani boshqa o'zgaruvchining adresi, ikkinchi qiymat esa, bu boshqa o'zgaruvchining asl qiymatidir. agar biz pointerning o'zi bilan ishlasak, biz hotiradagi adres bilan ishlagan bo'lamiz. ko'p hollarda esa buning keragi yo'q. pointer ko'rsatayotgan o'zgaruvchining qiymati bilan ushbu pointer yordamida ishlash uchun biz '*' belgisini, boshqacha qilib etganda, ko'rsatish operatorini (indirection, dereferencing operator) qo'llashimiz kerak bo'ladi. bunga misol beraylik. ... int k = 74; int *kptr = &k; ... cout > *kptr; // 290 qiymatini kiritaylik... cout char c = 44; // char tipidagi o'zgaruvchi char *pc = &c; …
4 / 8
iklaymiz! yuqoridagi satrimizda 4 dona son bor. toshkent shahri... hammasi kichik harfda: toshkent shahri... yuqoridagi dasturda ikki funksiya aniqlangan. change tolowercase()funksiyasining parametri juda oddiydir. oddiy char tipidagi pointer. ushbu pointer ko'rsatayotgan ma'lumot ham oddiydir. ikkinchi funksiyamizda esa (countdigits()), pointerimiz oddiy, yani uning qiymati o'zgarishi mumkin, u hotiraning turli adreslariga ko'rsatishi mumkin, lekin u ko'rsatayotgan o'zgaruvchi const deb e'lon qilindi. yani pointerimiz ko'rsatayotgan ma'lumot ayni ushbu pointer yordamida o'zgartirilishi ta'qiqlanadi. bizda yana ikki hol qoldi, ular quyida berilgan: const pointer va const o'zgaruvchi const pointer va oddiy o'zgaruvchi birinchi holga misol beraylik. ... int m = 88, j =77; const int * const pi = &m; // const pointer e'lon paytida // initsalizatsiya qilinishi shartdir ... m = 44; // to'g'ri amal *pi = 33; // hato! o'zgaruvchi const deb belgilandi; birinchi const pi = &j; // hato! pointer const deb belgilandi; int * dan keyingi const ... j = *pi; …
5 / 8
j; ifoda bilan esa pi ga yangi adres bermoqchi bo'ldik. lekin pointerimiz o'zgarmas bo'lgani uchun biz biz bu amalni bajara olmaymiz. pointerlar va const ifodasining birga qo'llanilishining to'rtinchi holiday const pointer va oddiy hotira adresi birga ishlatilinadi. bunga bir misol: int j = 84, d = 0; int * const ptr = &j; // e'lon davrida initsalizatsiya shartdir *ptr = 100; // to'g'ri amal ptr = &d; // hato! ptr ko'rsatayatgan // hotira adresi o'zgartilishi ta'qiqlanadi yuqorida ptr ko'ratayatgan adresni o'zgartirsak, kompilyator hato beradi.aslida, massiv ismlari ham ayni shu holga misol bo'la oladilar. massiv ismi massivning birinchi elementiga const pointerdir. lekin u ko'rsatayotgan massiv birinchi elementning qiymati o'zgartilishi mumkin. pointer va oddiy o'zgaruvchilarning egallagan adres kattaligi pointerlar istalgan ichki asos tipga (char, int, double ...) yoki qollanuvchi belgilagan tipga (class, struct ...) ko'rsatishi mumkin. albatta, bu turli tiplar hotirada turlicha yer egallaydilar. char bir bayt bo'lsa, double 8. lekin bu …

Хотите читать дальше?

Скачайте все 8 страниц бесплатно через Telegram.

Скачать полный файл

О "c++ 5-darslik"

c++ 5-darslik 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 yorda...

Этот файл содержит 8 стр. в формате DOCX (21,9 КБ). Чтобы скачать "c++ 5-darslik", нажмите кнопку Telegram слева.

Теги: c++ 5-darslik DOCX 8 стр. Бесплатная загрузка Telegram