Я очень смущен указателями C++ и справочными операторами. Моя основная путаница заключается в следующем (простой) код:Pointer Confusion with C++
#include <iostream>
using namespace std;
void changeInt(int &a)
{
a *= 3;
}
int main()
{
int n = 3;
changeInt(n);
cout << n << endl;
return 0;
}
В основном, я запутался, почему изменение адреса (& а) изменяет фактическую переменную (п). Когда я впервые попытался решить эту проблему, это был мой код:
#include <iostream>
using namespace std;
void changeInt(int &a)
{
*a *= 3;
}
int main()
{
int n = 3;
changeInt(n);
cout << n << endl;
return 0;
}
Но это дает мне ошибку. Почему, когда я меняю адрес, он меняет эту переменную, но когда я изменяю значение, указанное адресом, я получаю сообщение об ошибке?
, но здесь он говорит иначе: http://www.cplusplus.com/doc/tutorial/pointers/ –
@ Asad-ullahKhan: нет, это не так: страница рассказывает о '&' операторе, но ваш (вы объявляете ссылку, с 'int &') – quantdev
OHHH, которая имеет больше смысла! Спасибо вам! –