Quais são as distinções entre os vários símbolos (*, &, etc) combinados com os parâmetros? [duplicado

Possible Duplicate:
c ++ * vs e na declaração de função

Sei que isso provavelmente parece uma pergunta incrivelmente elementar para muitos de vocês, mas realmente não tive tempo de encontrar uma explicação boa e completa, apesar de todo o meu melhor Google. Estou certo de que a resposta está disponível e, portanto, meus termos de pesquisa devem ser terríveis.

No C ++, uma variedade de símbolos e combinações dos mesmos são usados para marcar parâmetros (bem como argumentos para esses parâmetros). Quais são exatamente seus significados?

Ex: Qual é a diferença entrevoid func(int *var) evoid func(int **var)? A respeitoint &var?

A mesma pergunta significa tipos de retorno, bem como argumentos. O queint& func(int var) significa, em comparação comint* func(int var)? E nos argumentos, comoy = func(*x) difere day = func(&x)?

Estou mais do que feliz em ler enormes volumes sobre o assunto, se você pudesse me apontar na direção certa. Além disso, estou extremamente familiarizado com os conceitos gerais de programação: OO, genéricos / modelos etc., apenas a notação usada em C / C ++.

EDITAR Parece que posso ter dado a impressão de que não sei o que são indicadores. Eu me pergunto como isso poderia ser:)

Então, para esclarecimentos: eu entendo perfeitamente como funcionam os ponteiros. O que eu sounã agarrar, e sou estranhamente incapaz de encontrar respostas para, é o significado de, por exemplo, 'void func (int & var)'. No caso de uma declaração de atribuição, o operador '&' estaria do lado direito, como em 'int * x = & y;', mas, acima, o operador '&' estará efetivamente no lado esquerdo. Em outras palavras, está operando com o valor l, em vez do valor r. Isso claramente não pode ter o mesmo significad

Espero que esteja fazendo mais sentido agora?

questionAnswers(10)

yourAnswerToTheQuestion