Middle
Ի՞նչ են հղման տիպերի զանգվածները ծրագրավորման համատեքստում։
sobes.tech AI
Պատասխան AI-ից
Հղումային տիպերի զանգվածները ծրագրավորման կոնտեքստում չեն պարունակում հենց օբյեկտները, այլ հղումներ (հասցեներ) հիշողության տարածքների վրա, որտեղ պահվում են այդ օբյեկտները: Բացառությամբ հիմնական տիպերի զանգվածներից, որոնք անմիջապես պահում են արժեքները, հղումային տիպերի զանգվածները պահում են ցուցիչներ դասերի, ինտերֆեյսների կամ այլ հղումային տիպերի օրինակների վրա:
Հատկություններ՝
- Հիշողություն: Հղումային տիպերի զանգված ստեղծելիս հիշողություն է հատկացվում միայն զանգվածի համար (հղումների պահեստ), բայց ոչ ինքն օբյեկտների համար: Օբյեկտները ստեղծվում են առանձին
newհրահանգով: - Ինիցիալիզացիա: Դեռ նախնական արժեքները զանգվածի հղումային տարրերի համար
nullեն (շատ լեզուներում), ինչը նշանակում է, որ հղում չկա որևէ օբյեկտի վրա: - Կոպիայինացում: Երբ մի հղումային զանգված նշանակվում է մյուսին (օր.,
array2 = array1), միայն հղումները են կոպիայինվում, ոչ թե ինքն օբյեկտները: Երկու զանգվածներն էլ ցույց են տալիս նույն օբյեկտներին հիշողության մեջ: Օբյեկտի փոփոխությունը, որի վրա հղում է, կանդրադառնա մյուսին: - Պոլիմորֆիզմ: Հղումային տիպերի զանգվածներում կարելի է պահել տարբեր դասերի օբյեկտների հղումներ, եթե այդ դասերը ժառանգում են ընդհանուր բազային դասից կամ իրականացնում ընդհանուր ինտերֆեյս:
Java-ի օրինակ՝
// Հղումային զանգված ստեղծել String դասի օբյեկտների համար
String[] names = new String[3];
// Զանգվածի տարրերի ինիցիալիզացիա՝ հղումներով String օբյեկտների
names[0] = new String("Alice");
names[1] = "Bob"; // String լիտերալը նույնպես հղումային տիպ է
names[2] = new String("Charlie");
// links և names զանգվածները ցույց են տալիս նույն օբյեկտներին
String[] links = names;
// Օբյեկտի փոփոխություն մեկ զանգվածով անդրադառնում է մյուսին
links[0] = "Alicia";
// Տպել արժեքը սկզբնական զանգվածում
System.out.println(names[0]); // Տպում է "Alicia"
Python-ի օրինակ՝
# Զանգվածի (լիստի) ստեղծում՝ հղումներով օբյեկտներին
data = [1, "hello", [1, 2]] # տարրերը հղումներ են int, str, list օբյեկտներին
# Այլ փոփոխական ցույց է տալիս նույն լիստին
more_data = data
# Օբյեկտի փոփոխությունը մեկ հղումով անդրադառնում է մյուսին
more_data[0] = 10
# Տպել արժեքը սկզբնական լիստում
print(data[0]) # Տպում է 10
# Անկախ կոպիա ստեղծել
copied_data = data[:] # Ստեղծում է մակերեսային կոպիա (հղումները կիսվում են)
Հասկանալով հղումային տիպերի զանգվածների աշխատանքի սկզբունքը կարևոր է հիշողության ճիշտ կառավարման և սխալների կանխարգելման համար, որոնք կապված են օբյեկտների փոփոխության հետ տարբեր հղումներով։