Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr
232
i=b;
}
void main() {
int list[10];
list[i]=5;
fun (i, list[i]);
}
fun funksiyasida ssыlka bo‘ylab parametrlarni jo‘natish amalga oshiriladi,
bunda i va a o‘zgaruvchilari alternativ nomlar bo‘ladi. Agar parametrlar qiymat va
natijalar bo‘ylab yuborilsa, i va a o‘zgaruvchilari alternativ nomlar bo‘lmaydi. Bu
holda fun funksiya amallari quyidagicha:
addr_i = &i - birinchi parametr manzilini jo‘natish
addr_listi = &list[i] - ikkinchi parametr manzilini jo‘natish
a = *addr_i
- birinchi parametr qiymatini jo‘natish
b = *addr_listi
- ikkinchi parametr qiymatini jo‘natish
i = b
- i ni 5 ga tenglash
*addr_i = a
- birinchi parametr qiymatini qaytarib olish
*addt_listi = b
- ikkinchi parametr qiymatini qaytarib olish
Bu holda, fun quyi dasturida i global o‘zgaruvchisini qabul qilish natijasida
uning qiymati 2dan 3ga o‘zgaradi, orqaga esa 3 qiymatni saqlovchi birinchi rasmiy
parametr nusxasi qaytariladi. Bu yerda ssыlka bo‘ylab xabar jo‘natish amalga
oshirilsa, nusxa qaytarish parametrlarni jo‘natish semantikasi bo‘limi bo‘lmasligini
yodda tutish lozim. Shuning uchun i o‘zgaruvchisi 5 ga tengiligicha qoladi. Ikkinchi
parametr manzili fun funksiyasi bajarilishidan oldin hisoblangani uchun, global i
o‘zgaruvchisidagi o‘zgarishlar uning manziliga ta’sir ko‘rsatmaydi. Ushbu manzil list[i]
o‘zgaruvchisining qiymati qaytarilganida chiqishda qo‘llaniladi.