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