Junior
Nima bu havola orqali o'tkazish?
sobes.tech AI
AIdan javob
Referens orqali uzatish (pass by reference) - bu mexanizm bo'lib, unda funktsiyaga argumentning ma'lumotlar saqlangan xotira manzili (referensiya) yuboriladi. Natijada, funktsiya ichida o'zgarilgan har qanday o'zgarishlar, tashqaridagi asl o'zgaruvchiga ta'sir qiladi.
Asosiy xususiyatlar:
- Manzil (referensiya) yuboriladi, qiymatning nusxasi emas.
- Funktsiya to'g'ridan-to'g'ri original ma'lumotlar bilan ishlaydi.
- Funktsiya ichidagi o'zgarishlar uning yakunidan keyin ham saqlanadi.
- Bu ko'plab dasturlash tillarida ob'ektlar, massivlar va boshqa referensli ma'lumot turlariga tatbiq etiladi.
- Ba'zi tillarda (masalan, C++) primitiv turlarni aniq referens orqali uzatish uchun ko'rsatkichlar yoki referenslardan foydalanish mumkin.
Python kod misoli:
# Ro'yxatni uzatish (referensli tur)
def modify_list(my_list):
my_list.append(4) # Asl ro'yxatga o'zgartirish
data = [1, 2, 3]
modify_list(data)
print(data) # [1, 2, 3, 4] chiqaradi
# Raqamni uzatish (primitiv tur - Python'da qiymat orqali uzatish)
def modify_number(my_number):
my_number += 1 # Mahalliy nusxa yaratiladi va o'zgartiriladi
value = 5
modify_number(value)
print(value) # 5 chiqaradi - asl qiymat o'zgarmadi
C++ kod misoli:
#include <iostream>
// Referens orqali uzatish
void modify_value_ref(int &val) {
val += 10; // Asl o'zgaruvchini o'zgartirish
}
// Qiymat orqali uzatish (solishtirish uchun)
void modify_value_copy(int val) {
val += 10; // Mahalliy nusxani o'zgartirish
}
int main() {
int a = 5;
modify_value_ref(a);
std::cout << "Referensdan keyin: " << a << std::endl; // 15 chiqaradi
int b = 5;
modify_value_copy(b);
std::cout << "Nusxadan keyin: " << b << std::endl; // 5 chiqaradi
return 0;
}
Afzalliklari:
- Katta hajmdagi ma'lumotlar bilan ishlashda samarali, chunki nusxa olish talab qilinmaydi.
- Funktsiyalar argumentlar orqali bir nechta qiymatni o'zgartirish imkonini beradi.
Kamchiliklari:
- Funktsiya argumentlarni nom yoki hujjatda aniq ko'rsatmasdan o'zgartirsa, kodni prognoz qilish qiyinlashadi.
- Nomaqbul yon ta'sirlarni oldini olish uchun ehtiyotkorlik talab etiladi.