C++ tilidagi massivlar Olingan ma'lumotlar turlari


Download 24.64 Kb.
bet3/4
Sana18.12.2022
Hajmi24.64 Kb.
#1030735
1   2   3   4
Bog'liq
7878 (1)

4. Ifodasi va l-ifodasi


Ob'ektlar va funktsiyalarga kirish iboralar bilan ta'minlanadi, bu holda ular ob'ektlarga tegishli.


Doimiy, o'zgaruvchi yoki funktsiyaga havolani ta'minlovchi ifoda l-ifoda deyiladi. C++ tilidagi ob'ekt nomi l-ifodaning maxsus holatidir.
C++ o'zgaruvchilar qiymatlarini o'zgartirish imkonini beradi. C++ da konstantalar va funksiyalarning qiymatlarini o'zgartirib bo'lmaydi. l-ifoda, agar u funktsiya, massiv yoki doimiyga tegishli bo'lmasa, o'zgartiriladigan l-ifoda yoki chap qo'l ifoda deb ataladi . Shunday qilib, o'zgaruvchilarga tegishli l-ifodalar chap qo'l ifodalar deb ataladi.
Shuni ta'kidlash kerakki, biz ilgari tanishgan doimiy ko'rsatkich xuddi shunday yo'l tutadi. Shuningdek, u darhol ishga tushirishni talab qiladi (bu ma'lum bir qiymatni olishning yagona imkoniyati) va o'z qiymatini keyinchalik o'zgartirishga ruxsat bermaydi.
Ko'pincha, ko'rsatgichning o'zi operatsiyalar yoki xotirani taqsimlash funktsiyalari tomonidan ajratilgan xotira qismining o'rnini "biladi". Ushbu ko'rsatkichning qiymatini o'zgartirish dinamik xotirada joylashgan ob'ektga havolaning yo'qolishiga olib keladi. Bu shuni anglatadiki, dasturning qolgan qismi uchun mos keladigan xotira maydoniga kirish mumkin emas.
Xuddi shunday sababga ko'ra, operandlari massiv nomlari bo'lgan tayinlash operatsiyasi ham mumkin emas.
Operatorlar

intArray1 = intArray2;


intArray1[] = intArray2[];

massiv nomi doimiy ko'rsatkichga o'xshashligi sababli kompilyator tomonidan ruxsat berilmaydi. Bu o'zgarmas l-ifoda, shuning uchun u chap qo'l ifodasi emas va tayinlash operatorining chap tomonida ko'rsatilmaydi.


Belgilar massivi (char tipidagi) alohida belgilar konstantalari ro‘yxati bilan ham, belgilar qatori bilan ham ishga tushirilishi mumkin. Bunday holda, belgilar qatori bo'lsa, massiv oxirida qatorni cheklovchi null belgini ham oladi, masalan:

char ca_1 [ ] = { 'C', '+', '+' };


char ca_2 [ ] = “C++”;

Bu erda ca_1 3 o'lchamli bo'ladi va ca_2 4 o'lchovli bo'ladi va { 'C', '+', '+', '\0' } ni o'z ichiga oladi.


Bitta massivni boshqa massiv bilan ishga tushirish va boshqa massivga tayinlash mumkin emas, masalan:

int a1 [ ] = { 0, 1, 2 } ;


int a2[ ] = a1 ; // xato !!!
. . .
int a3 [3];
a3 = a1; // xato !!!

Bitta massivni boshqasiga nusxalash uchun har bir elementni navbat bilan nusxalashingiz kerak, masalan:


const int a_size = 7 ;


int a1 [ ] = { 0, 1, 2, 3, 4, 5, 6 };
…..
int a2[ a_size ] ;
uchun (int i =0; i < a_size; i++)
a2[ i ] = a1 [ i ] ;

Butun qiymatga olib keladigan har qanday ifoda massiv indeksi sifatida ishlatilishi mumkin.


C++ da massiv to'lib ketishini boshqarish mavjud emas. Barcha mas'uliyat dasturchida!
Dinamik xotirada ob'ektlarning nomsiz massivlarini ajratish ifodasi yordamida yaratishda (massivlarga ko'rsatgichlarni ishga tushirishda ) initsializatorlarga ruxsat berilmasligini unutmang. Joylashtirish ifodasidagi initsializator faqat bitta ob'ektni ishga tushirishi mumkin. Va bu erda gap joylashuv ifodasining maxsus xususiyatlarida emas, balki tilning xususiyatlari va tarjima jarayonining o'zida.
Massivni aniqlash operatorini bajarish jarayonida sodir bo'ladigan jarayonlarni ko'rib chiqamiz. Ular ko'p jihatdan doimiy ko'rsatkichni belgilashda sodir bo'ladigan jarayonlarga o'xshaydi:

  • deskriptordagi doimiy ifoda yoki initsializatordagi ma'lumotlarga asoslangan holda kerakli xotira maydoni hajmini aniqlaydi. Bu erda biz darhol massivning o'lchami haqida to'liq ma'lumotga muhtojmiz. Xotira maydonining o'lchami massiv elementining o'lchami va massiv o'lchamining mahsulotiga teng;

  • ajratilgan xotira,

  • ajratilgan xotira maydonining manzili xarakteristikalari bo'yicha doimiy ko'rsatgichga o'xshash ob'ektga beriladi (garchi u juda maxsus turdagi ob'ekt bo'lsa ham).

Endi biz oldingi bo'limlardan birida ko'rib chiqqan e'lonni eslashimiz mumkin. Massiv deklaratsiyasi

int array_7[];


kompilyator tomonidan faqat massiv e'lon qilish va doimiy ko'rsatkich e'lon qilish o'rtasidagi funksional o'xshashlik tufayligina noto'g'ri deklaratsiya sifatida qabul qilinadi. Massiv, doimiy ko'rsatgich kabi, deklaratsiya vaqtida ishga tushirilishi kerak.




Download 24.64 Kb.

Do'stlaringiz bilan baham:
1   2   3   4




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