Выражение a = a + " " + b + " " + c
можно разбить на основе указателей.
a + " "
говорит, дайте мне то, на что указывает a
, который нельзя изменить, и добавьте " "
к моему текущему рабочему набору.
память:
working_set = "Dog "
a = "Dog"
b = "eats"
c = "treats"
+ b
говорит, дайте мне то, на что указывает b
, который нельзя изменить, и добавьте это к текущему рабочему набору.
память:
working_set = "Dog eats"
a = "Dog"
b = "eats"
c = "treats"
+ " " + c
говорит добавить " "
к текущему набору. Затем дайте мне то, на что указывает c
, который нельзя изменить, и добавьте его в текущий рабочий набор.
память:
working_set = "Dog eats treats"
a = "Dog"
b = "eats"
c = "treats"
Наконец, a =
говорит, что установите мой указатель, чтобы он указывал на результирующий набор.
память:
a = "Dog eats treats"
b = "eats"
c = "treats"
"Dog"
исправлено, поскольку указатели больше не подключаются к его фрагменту памяти. Мы никогда не изменяли раздел памяти, в котором находился "Dog"
, что означает неизменный. Однако мы можем изменить метки, если таковые имеются, которые указывают на этот раздел памяти.