Я java-кодер, а не знакомый с языком C++. Но сейчас, я прочитал следующий код:В чем смысл * &
void method(A* a,A*& b);
A *a;
A *b;
method(a,b);
И мой вопрос: что значение «* &» ли это означает, что он представляет ценность б себя? thx
Я java-кодер, а не знакомый с языком C++. Но сейчас, я прочитал следующий код:В чем смысл * &
void method(A* a,A*& b);
A *a;
A *b;
method(a,b);
И мой вопрос: что значение «* &» ли это означает, что он представляет ценность б себя? thx
b
- ссылка на указатель A
.
Так что, если method
комплектов b
, то значение b
в зоне вызова будет изменено.
@dirkgently: question's tagged 'C++' – mkb
Прочтите это справа налево. A*& b
говорит, что b
является ссылкой на объект, который указывает на A
. Почему это полезно? Он позволяет напрямую изменять указатель, который передается в функцию. Что бы ни случилось с b
внутри этой функции, будет видно, когда функция вернется.
Ну, но если я передаю указатель в функцию, например a, в моем примере, модификация функции все еще вступает в силу. Правильно? –
Это действительно зависит от того, что происходит внутри 'метода'. В любом случае, это выходит за рамки вопроса, потому что похоже, что у вас еще нет четкого понимания того, как работают указатели и ссылки. Единственный способ по-настоящему понять их - поэкспериментировать с тестовыми программами и т. Д. – Marlon
Хорошо, благодарю вас за ур совет –
См. [This] (http://stackoverflow.com/a/9637342/365496), чтобы понять, каковы два разных значения '&'. Ваш вопрос «Значит ли это, что он представляет ценность самого b?» звучит так, будто вы сбиваете их с толку и считаете, что '* & b' здесь означает« взять адрес b, а затем разыменовать его ». Связанный ответ дает понять, почему это не означает, что в этом контексте. – bames53