Junior
Тавсия дар бораи интиқол чӣ аст?
sobes.tech AI
Ҷавоб аз AI
Ҳамсілдоши бо истинод (pass by reference) — механизмиест, ки дар он ба функсия суроға (ишора) ба минтақаи хотира, ки маълумоти тағйирёбандаи аргумент нигоҳ дошта мешавад, дода мешавад. Дар натиҷа, ҳар гуна тағйиротҳое, ки дар дохили функсия ба тағйирёбанда ворид мешаванд, ба тағйирёбандаи аслӣ дар беруни он таъсир мерасонанд.
Хусусиятҳои асосӣ:
- Суроғаи хотира дода мешавад, на нусхаи арзиш.
- Функсия мустақиман бо маълумоти аслӣ кор мекунад.
- Тағйиротҳо дар дохили функсия пас аз анҷоми он нигоҳ дошта мешаванд.
- Барои объектҳо, массивҳо ва дигар намудҳои маълумоти истинодӣ дар бисёр забонҳои барномасозӣ мувофиқ аст.
- Дар баъзе забонҳо (масалан, C++) метавон ба равшанӣ намудан намудҳои примиативӣ тавассути истинодҳо ё ишораҳо гузаронид.
Маслиҳат дар Python:
# Ҳамсілдоши рӯйхат (наъли истинод)
def modify_list(my_list):
my_list.append(4) # Тағйир додани рӯйхати аслӣ
data = [1, 2, 3]
modify_list(data)
print(data) # Натиҷа: [1, 2, 3, 4]
# Ҳамсілдоши рақам (наъли примиативӣ - гузаронидани арзиш дар Python)
def modify_number(my_number):
my_number += 1 # Нусхаи маҳаллӣ эҷод мешавад, ки тағйир дода мешавад
value = 5
modify_number(value)
print(value) # Натиҷа: 5 - арзиши аслӣ тағйир наёфтааст
Маслиҳат дар C++:
#include <iostream>
// Гузаронидани тавассути ишора
void modify_value_ref(int &val) {
val += 10; // Тағйир додани тағйирёбандаи аслӣ
}
// Гузаронидани тавассути нусха (барои муқоиса)
void modify_value_copy(int val) {
val += 10; // Тағйир додани нусхаи маҳаллӣ
}
int main() {
int a = 5;
modify_value_ref(a);
std::cout << "After ref: " << a << std::endl; // Натиҷа: After ref: 15
int b = 5;
modify_value_copy(b);
std::cout << "After copy: " << b << std::endl; // Натиҷа: After copy: 5
return 0;
}
Умумиятҳо:
- Дар кор бо ҳаҷми калонтар маълумотҳо самаранок аст, зеро нусхабардорӣ талаб намекунад.
- Имкон медиҳад, ки функсия чанд арзишро тавассути аргументҳо тағйир диҳад.
Норасоиҳо:
- Мумкин аст кодро камтар пешгӯишаванда созад, агар функсия аргументҳоро бе ишораи равшан тағйир диҳад.
- Бояд бо эҳтиёт истифода шавад, то таъсири тарафҳои номуайян пешгирӣ карда шаванд.