У меня есть функция сказать аннулируются theFunc (интермедиат Num &, Int * массив), который принимает в качестве межд по ссылке и указатель массиваПередача стека выделяется аргумент по ссылке на массив
theFunc(int num&, int* array)
{ array[0] = num;
}
это просто пример, так что функция делает что-то простое
int main()
{ int k = 3;
int* theArray = new int[5];
theFunc(k, theArray);
delete[] theArray;
return(0);
}
Мой вопрос заключается в том, как это к, стек выделяется ИНТ экземпляр, передаваемый по ссылке на theFunc и хранится в динамически хранится массив. Я знаю, что объекты/аргумент не могут просто перемещаться между стеком и кучей, потому что у них есть определенные сохраненные адреса памяти. Я хочу понять, почему это работает, и что происходит под капотом (также, если есть разница в этом случае от передачи по значению).
Спасибо!
Переменные стека имеют адрес памяти. Адрес просто передается функции так же, как и адрес кучи. –
Другим ключевым моментом является то, что _value_ of 'k' _copied_ в' array [0] ' – qxz
' int num & 'является синтаксической ошибкой. Также 'theFunc' должен иметь тип возврата. Пожалуйста, внесите реальный код –