Junior
C/C++ tilida havola va ko'rsatkich o'rtasidagi farqlar haqida gapiring.
sobes.tech AI
AIdan javob
Bir referans mavjud ob' uchun takroriy nom sifatida qaralishi mumkin; ko'rsatgich ob'ektning xotira manzilini o'z ichiga oladi.
| Xususiyat | Referensiya | Ko'rsatgich |
|---|---|---|
| Initsializatsiya | E'lon qilinayotganda initsializatsiya qilinishi kerak. | Initsializatsiya qilinmasligi mumkin. |
| Qayta tayinlash | Initsializatsiyadan so'ng qayta tayinlanmaydi. | Boshqa ob'ektga murojaat qilishi mumkin. |
| Null qiymat | null bo'lishi mumkin emas. | nullptr (C++11) yoki NULL (C/C++) bo'lishi mumkin. |
| Massiv indeksatsiyasi | To'g'ridan-to'g'ri ko'rsatgich arifmetikasini qo'llab-quvvatlamaydi. | Ko'rsatgich arifmetikasini qo'llab-quvvatlaydi. |
| Operatorlar | To'g'ridan-to'g'ri ishlatiladi (. a'zolar uchun). |
* bilan dereferensiya qilish, -> bilan a'zolar uchun. |
| O'lcham | O'z o'lchami yo'q, ob'ekt o'lchamiga murojaat qiladi. | Tizimdagi manzil o'lchamiga mos keladi (odatda 4 yoki 8 bayt). |
| Xotira ajratish | Aniq xotira ajratish/erkin qilish talab qilinmaydi. | new/delete talab qilishi mumkin (C++ da). |
| Foydalanish | Ko'pincha funksiyalarga parametr sifatida uzatish uchun ishlatiladi. | Dinamik xotira ajratish, past darajadagi kirish uchun. |
// Referensdan foydalanish misoli
int x = 10;
int& ref = x; // ref - x uchun takroriy nom
ref = 20; // x endi 20
// Ko'rsatgichdan foydalanish misoli
int y = 30;
int* ptr = &y; // ptr y manziliga murojaat qiladi
*ptr = 40; // y endi 40
// Ko'rsatgich nullptr bo'lishi mumkin
int* null_ptr = nullptr;