2012-06-16 5 views
0

Я java-кодер, а не знакомый с языком C++. Но сейчас, я прочитал следующий код:В чем смысл * &

void method(A* a,A*& b); 

A *a; 
A *b; 
method(a,b); 

И мой вопрос: что значение «* &» ли это означает, что он представляет ценность б себя? thx

+0

См. [This] (http://stackoverflow.com/a/9637342/365496), чтобы понять, каковы два разных значения '&'. Ваш вопрос «Значит ли это, что он представляет ценность самого b?» звучит так, будто вы сбиваете их с толку и считаете, что '* & b' здесь означает« взять адрес b, а затем разыменовать его ». Связанный ответ дает понять, почему это не означает, что в этом контексте. – bames53

ответ

1

b - ссылка на указатель A.

Так что, если method комплектов b, то значение b в зоне вызова будет изменено.

+0

@dirkgently: question's tagged 'C++' – mkb

0

Прочтите это справа налево. A*& b говорит, что b является ссылкой на объект, который указывает на A. Почему это полезно? Он позволяет напрямую изменять указатель, который передается в функцию. Что бы ни случилось с b внутри этой функции, будет видно, когда функция вернется.

+0

Ну, но если я передаю указатель в функцию, например a, в моем примере, модификация функции все еще вступает в силу. Правильно? –

+0

Это действительно зависит от того, что происходит внутри 'метода'. В любом случае, это выходит за рамки вопроса, потому что похоже, что у вас еще нет четкого понимания того, как работают указатели и ссылки. Единственный способ по-настоящему понять их - поэкспериментировать с тестовыми программами и т. Д. – Marlon

+0

Хорошо, благодарю вас за ур совет –