tip & nom;
bu yerda tip – bu murojaat ko'rsatuvchi miqdor tipi, & - undan keying nom murojaat tipidagi o'zgaruvchi nomi ekanligini bildiruvchi murojaat operatori, masalan:
int kol;
int& pal = kol; // pal murojaat – kol uchun muqobil nom
const char& CR = '\n'; // konstantaga murojaat
Quyidagi qoidalarni eslab qoling.
O'zgaruvchi-murojaat, u funksiya parametric bo'lganda, extern kabi tavsiflanadi yoki sinfning ma'lumotlar maydoniga murojaat qilingandan tashqari hollarda uni tavsiflashda oshkora initsializatsiyalanishi lozim.
Initsializatsiyadan keyin murojaatga boshqa o'zgaruvchi berilmasligi lozim.
Murojaat tipi u murojaat etadigan miqdor bilan tipi bilan ustma-ust tushish lozim.
Murojaatlarga ko'rsatgichlar aniqlashgan murojaatlar massivlari va murojaatga murojaat yaratishga ruxsat berilmaydi.
Murojaat ko'proq funksiyalar parametrlari va funksiyalar qaytaruvchi qiymatlar tiplari sifatida qo'llaniladi. Murojaatlar adres bo'yicha, manzillar ajratish amalisiz uzatiladigan o'zgaruvchilarni funksiyalarda foydalanishga imkon beradi, bu esa dasturning o'qilishini yaxshilaydi.
Ko'rsatgichdan farqli murojaat xotirada qo'shimcha joy egallaydi va miqdorning boshqa nomi hisoblanadi. Murojaat ustida amal u murojaat qiladigan miqdorning o'zgarishiga olib keladi.
Massivlar
Oddiy o'zgaruvchilardan foydalanganda har bir xotira sohasiga ma'lumotlarni saqlash uchun o'z nomi mos keladi. Agar bir xil tipdagi miqdorlar guruhi bilan bir xil amallar bajarilsa, ularga bitta nom beriladi, tartib nomeri bo'yicha esa farq qilinadi. Bu amallar to'plamini sikllar yordamida kompakt yozishga imkon beradi. Chekli nomlangan bir xil tipli miqdorlar ketma-ketligi massiv deb ataladi. Dasturda massivning tavsifi oddiy o'zgaruvchi tavsifidan kvadrat qavslar nomidan so'ng massiv elementlari soni (o'lchami) mavjudligi bilan farq qiladi:
float a [10]; // 10 ta haqiqiy sondan iborat massiv tavsifi
DIQQAT
Massivlarni tavsiflashda kvadrat qavslar sintaksis elementi hisoblanadi, konstruksiyaning majburiy emasligiga ko'rsatma emas.
Massiv elementlari noldan nomerlanadi. Massivni tavsiflashda oddiy o'zgaruvchilardagi modifikatorlar (xotira sinfi, const va initsializator) ishlatiladi. Massivlar uchun initsializatsiyalovchi qiymatlar figurali qavslarga yoziladi. Elementlarga qiymatlar tartib bo’yicha beriladi. Agar massivda elementlar initsializatorlardan ko'p bo'lsa qiymatlari ko'rsatilmagan elementlar nolga aylantiriladi:
int b[5] = {3, 2, 1}; // b[0]=3, b[1]=2, b[2]=1, b[3]=0, b[4]=0
Massiv o'lchami uning elementlari tipi bilan birgalikda kompilyatsiya bosqichida bajariladigan massivni joylashtirish uchun zarur xotira hajmini aniqlaydi, shuning uchun o'lcham faqat butun musbat konstanta yoki konstant ifoda bilan berilishi mumkin. Agar massivni tavsiflashda o'lcham ko'rsatilmagan bo'lsa, initsializator bo'lishi lozim, bu holda kompilyator initsializatsiyalanuvchi qiymatlar soni bo'yicha xotira ajratadi.
Massiv elementiga kirish uchun uning nomidan keyin element nomeri (indeksi) kvadrat qavslarda ko'rsatiladi. Quyidagi misolda massiv elementlari yig'indisi hisoblanadi.
#include
int main ()
{
const int n = 10;
int i, sum;
int marks[n] = {3, 4, 5, 4, 4};
for (I = 0, sum = 0; icout << "Elementlar yig'indisi: " << sum;
return 0;
}
Massivlar o'lchamini misolda ko'rsatilgani kabi nomlangan konstantalar yordamida berish yaxshiroq, chunki bunda uni o'zgartirish uchun konstanta qiymatini faqat dasturning bir joyida to'g'rilash yetarli. E'tibor bering, massiv oxirgi elementi uni o'lchamini tavsiflashda berilgan nomerdan bittaga kichik nomerga ega.
DIQQAT
Massiv elementlariga murojaat etganda indeksning massiv chegarasidagi avtomatik nazorat-chiqishi amalga oshmaydi, bu xatolarga olib kelishi mumkin.
Misol. Butun sonli massivni tanlash usuli bilan saralash. Algoritm quyidagicha massivning eng kichik elementi tanlanadi va birinchi elementi bilan o'rin almashadi, so'ngra ikkinchisidan boshlab elementlar qaraladi va ulardan eng kichigi ikkinchi element bilan o'rin almashadi va h.k. n-1 marta (siklning oxirgi o'tishida zarurat bo'lganda massivning oxiridan oldingi va oxirgi elementlar o'rin almashadi).
#nclude
int main ()
{
const int n = 20; // massiv elementlari soni
int b[n]; // massiv tavsifi
int i;
for (i = 0; i> b[i]; // massivni kiriting
for (I = 0; i// qaralayotga elementlarda birinchisini eng kichik deb qabul qilamiz:
int imin = i;
// tartiblanmaganlarda minimal element nomerini izlang:
for (int j = i + 1; j// agar kichik element topilsa, uning nomerini eslab qolamiz:
if (b[j] < b[imin]) imin = j;
int a = b[i]; // elementlarni almashtiring
b[i] = b[imin]; // nomerlari bilan
b[imin] = a; // i va imin
}
// tartiblangan massivni chiqaring
for (i = 0; ireturn 0;
}
i va imin nomerli massiv elementlarini a buffer o'zgaruvchi orqali siklning i-chi o'tishida almashtirish jarayoni 1.9-rasmda tasvirlangan. Strelkalar oldidan raqamlar amallar tartibini bildiradi.
Do'stlaringiz bilan baham: |