Funksiya argumenti sifatida ko’rsatkichlardan foydalanish. Ko’rsatkichlar yordamida dinamik xotiradan foydalanish



Download 0,55 Mb.
Sana06.01.2022
Hajmi0,55 Mb.
#322438
Bog'liq
Leksiya #5

Funksiya argumenti sifatida ko’rsatkichlardan foydalanish. Ko’rsatkichlar yordamida dinamik xotiradan foydalanish

Hafta: 5

Ma’ruza: 5

Maqsad

  • Massivlar va ko’rsatkichlar o’rtasidagi bog’likliklarni tushunish
  • Ko’rsatkich argumentlarni funksiyaga uzatish
  • Funksiyadan ko’rsatkichning qaytishini o’rganish
  • Massiv funksiyalari bilan birgalikda ko’rsatkichlardan foydalanish
  • Dinamik massiv hosil qilishda new operatoridan foydalanish
  • Ob’yektlarni dinamik tarzda yaratish va ularga ko’rsatkich orqali murojaat qilish
  • this ko’rsatkichidan foydalanib, ob’yektlarni chaqirish

Massivlar va ko’rsatkichlar

Massivda massiv nomi birinchi elementni ko’rsatuvchi konstanta ko’rsatkich hisoblanadi.

Tasavvur qiling, quyidagicha massiv e’lon qilingan:

Massivlar va ko’rsatkichlar

Listing 11.2 ArrayPointer.cpp

Ogohlantirish!

*(list + 1) dan *list+1 farqli. *list + 1 massiv birinchi elementi qiymatini birga oshiradi, *(list + 1) esa, (list + 1) adresdagi qiymatni oladi.

Listing 11.3 PointerWithIndex.cpp

Massivlar va ko’rsatkichlar

Bu holatda xatolik yuzaga kelishining sababi, massiv nomi konstanta ko’rsatkichligida.

C-string da ko’rsatkich

Funksiya chaqirilishida ko’rsatkich argumentlarni uzatish

C++ funksiyalarida ko’rsatkichlar parametrlar bo’lishi mumkin.

Ko’rsatkich argument qiymat orqali yoki havola orqali uzatilishi mumkin. Qiyudagicha aniqlangan funksiyani qaraylik:

void f(int* p1, int* &p2)

Uning ekvivalenti:

typedef int* intP;

void f(intP p1, intP& p2)

Funksiyada ko’rsatkichlar

Quyidagi holatlarni tahlil qilamiz. q1 va q2 ko’rsatkichlari f funksiyaning argumentlari bo’lsin, ya’ni f(q1, q2):

  • q1 ko’rsatkich p1 ga qiymat orqali uzatilmoqda. *p1 va *q1 bir xil kontentni ko’rsatmoqda. Agar f funksiya *p1 (misol uchun, *p=20) ni o’zgartirsa, u holda *q1 ham o’zgaradi. Ammo, f funksiya p1 (misol uchun, p1=pUzgaruvchi) ni o’zgartirsa, q1 o’zgarmasdan qoladi.
  • q2 ko’rsatkich p2 ga havola orqali uzatilmoqda. Shuning uchun q2 va p2 lar hamkorlar hisoblanadi. Ular bir xildirlar. Agar f funksiya *p2 (misol uchun, *p=20) ni o’zgartirsa, u holda *q2 ham o’zgaradi. Agar f funksiya p2 (misol uchun, p2=pUzgaruvchi) ni o’zgartirsa, u holda q2 ham o’zgaradi.

Listing 11.4 TestPointerArgument.cpp

Funksiyadan ko’rsatkichning qaytarilishi

C++ da funksiya ko’rsatkichni qaytarishi mumkin.

Quyidagi listingni qaraymiz:

Listing 11.6 ReverseArrayUsingPointer.cpp

Dinamik xotira

new operatori turlar, massivlar va ob’yektlar uchun bajarilish vaqtida dinamik xotira yaratadi.

Listing 11.6 da argument massiv, uni teskari qilish va massivni qaytarish funksiyasi keltirilgan. Tasavvur qiling, haqiqiy massivni o’zgartirmaslik kerak. Massivni argument sifatida uzatib, elementlarini teskari tarzda o’zgartiruvchi, massiv qaytaruvchi funksiyani qayta yozamiz.

Uning algoritmi quyidagicha:

  • Haqiqiy massiv list bo’lsin.
  • Haqiqiy massiv o’lchami bilan bir xil bo’lgan result nomli yangi massiv e’lon qilish.

Dinamik xotira

3. Haqiqiy massivning birinchi, ikkinchi va h.k oxirgi elementlaridan yangi massivning oxiridan boshlab nusxa olish, u quyidagi diagrammada ko’rsatilgan:

4. result ni ko’rsatkich sifatida qaytarish.

Dinamik xotira

Funksiya prototipi quyidagicha:

Qadam2 da yangi massiv qanday e’lon qilinadi? Siz quyidagicha e’lon qilib urinib ko’rishingiz mumkin:

Ammo C++ da o’lchamni o’zgaruvchi orqali ko’rsatib bo’lmaydi. Bu cheklovdan qutulish uchun massivning o’lchamini 6 deb belgilaymiz. Bu holatda massiv quyidagicha e’lon qilinadi:

Listing 11.8 WrongReverse.cpp


Bu xatolikdan chiqish uchun dinamik xotiradan foydalanish lozim.

new operatori

C++ da dinamik xotiradan foydalanish mumkin. Xotira new operatori orqali yaratiladi. Misol uchun,

int* p = new int(4);

Bu yerda new int orqali int o’zgaruvchisi


Download 0,55 Mb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish