У меня есть функция C ++, в которой у меня есть два int
, цель которых - служить счетчиками, которые объявлены вне функции в моем основном коде. Моя цель состоит в том, чтобы обновить переменные счетчика с результатом выполнения функции.
Я объявил их таковыми
int cor_letters = 0;
int cor_place = 0;
и затем вызвал мою функцию как
res = compare(input, secret_word, &cor_letters, &cor_place);
Мой compare
заголовок функции:
bool compare(string user_input, string secret, int * correct_letters, int * correct_place)
, а в моем коде compare
, когда я получаю окончательные значения счетчиков, я обновляю их так:
correct_letters = &cor_l;
correct_place = &cor_p;
Я пришел к этому решению после тщательного изучения ошибок моего компилятора, и это, похоже, работает. Однако я не совсем понимаю, почему это работает. Сначала я беру адрес двух переменных и передаю их в функцию. Но функция принимает два указателя. Таким образом, указатели указывают на адрес переданных переменных.
До этого момента я, кажется, понимал, что происходит. Но это последние назначения, которые меня смущают - указатели (обратите внимание, это имена переменных из заголовка функции) затем обновляются до адреса временных переменных внутренней функции, которые я использую. Почему это дает мне значения?
Я - больше визуальный ученик, и указатели трудно понять, просто читая некоторый текст, так что, если вы не возражаете, составьте небольшую текстовую диаграмму для представления того, чтопроисходит, это было бы здорово. Спасибо