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?