Sobes.tech
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.