Каковы различия между различными символами (*, & и т. Д.) В сочетании с параметрами? [Дубликат]

Возможный дубликат:
c ++ * vs & в объявлении функции

Я знаю, что это, вероятно, кажется невероятно элементарным вопросом для многих из вас, но у меня действительно было невозможное время найти хорошее, подробное объяснение, несмотря на все мои лучшие поиски в Google. Я уверен, что ответ там, и поэтому мои условия поиска должны быть ужасными.

В C ++ для обозначения параметров используются различные символы и их комбинации (а также аргументы этих параметров). Каковы, собственно, их значения?

Пример: в чем разница междуvoid func(int *var) а такжеvoid func(int **var)? Что оint &var?

Этот же вопрос относится к типам возвращаемых данных и аргументам. Что значитint& func(int var) значит, по сравнению сint* func(int var)? И в аргументах, как этоy = func(*x) отличаться отy = func(&x)?

Я более чем счастлив прочитать огромные тома на эту тему, если бы вы только указали мне правильное направление. Кроме того, я очень хорошо знаком с общими концепциями программирования: ОО, дженерики / шаблоны и т. Д., Но не с обозначениями, используемыми в C / C ++.

РЕДАКТИРОВАТЬ: Кажется, у меня создалось впечатление, что я не знаю, что такое указатели. Интересно, как это могло быть :)

Поэтому для пояснения: я прекрасно понимаю, как работают указатели. Что яне понять, и странно не могу найти ответы, это значение, например, 'void func (int & var)'. В случае оператора присваивания оператор «&» будет справа, как в «int * x = & y;», но в приведенном выше операторе «&» фактически слева. Другими словами, он работает с l-значением, а не с r-значением. Это явно не может иметь того же значения.

Надеюсь, что сейчас у меня больше смысла?

Ответы на вопрос(5)

Ваш ответ на вопрос