Вы путаете два разных типа ссылок. Строки являются ссылками на экземпляры . Ваша функция подкачки принимает ссылки на переменные .
Думайте об этом так. У вас есть две книги, "Рождественская песнь в прозе" и "Пиквикские бумаги". Это книги; у них есть страницы, текст и еще много чего.
У вас есть десять листов бумаги. Пятерка говорит "Рождественская песнь в прозе". Пятерка говорит «Пиквикские бумаги». Документы ссылки на книги. Это не книги.
У вас есть десять ящиков с надписями A, B, C, D, E, F, G, H, I, J. Вы кладете бумаги с надписью «Рождественская песнь» в ящик от A до E и бумаги с надписью "Pickwick Papers" в ящики F через J.
Теперь вы хотите поменять местами содержимое ящиков E и I. Какую информацию вы должны предоставить обменнику? Нельзя сказать, чтобы обменять "Поменять местами ссылки на Christmas Carol для Pickwick Papers" потому что это изменило бы все десять ящиков, а не только E и I. Информация, которую вы должны предоставить своперу, это «E» и «I». Вы должны передать ссылку на две переменные ; тот факт, что сами переменные содержат ссылку на книгу, не имеет значения.
У вашего своппера есть три собственных ящика, помеченные как первый, второй и временный. Требуется два куска бумаги. Один говорит «Е», и это идет в ящике с надписью «первый». Один говорит «я», и это входит в ящик с надписью «второй».
Своппер смотрит «первым» и находит бумагу с надписью «E». Он смотрит в «E» и находит бумагу с надписью «Christmas Carol». Он делает ксерокопию этой бумаги и помещает копию в «временную» ... и вы видите, как это происходит отсюда, я надеюсь.