Junior — Middle
Ako rozlíšiť typy údajov podľa hodnoty a odkazu a aké sú medzi nimi rozdiely v programovaní?
sobes.tech AI
Odpoveď od AI
Typy údajov podľa hodnoty a podľa odkazu sa líšia v spôsobe, akým sú uložené a prenášané v programe.
- Typy podľa hodnoty (value types) sa kopírujú pri priraďovaní alebo odovzdávaní. Každá premenná obsahuje vlastnú nezávislú kópiu údajov.
- Typy podľa odkazu (reference types) pri priraďovaní alebo odovzdávaní kopírujú odkaz na ten istý objekt v pamäti. Zmeny cez jednu referenciu sú viditeľné cez ostatné.
Napríklad v Swift:
var a = 5
var b = a // kopíruje hodnotu 5
b = 10
print(a) // 5, pretože a a b sú nezávislé
class Person {
var name: String
init(name: String) { self.name = name }
}
var p1 = Person(name: "Иван")
var p2 = p1 // kopíruje odkaz
p2.name = "Пётр"
print(p1.name) // "Пётр", pretože p1 a p2 odkazujú na ten istý objekt
Preto je dôležité pochopiť rozdiel pre správu pamäti a predvídateľnosť správania programu.