Qual é a diferença entre passagem por endereço e passagem por referência na linguagem c?

Em palavras simples ...

Na passagem de endereço você vai passar o endereço do local da memória onde o valor ou qualquer dado é armazenado como parâmetro,

Na passagem por valor, você passará uma cópia dos dados como parâmetro.

Ok ... espero não te confundir ...

A sintaxe para passagem por endereço é * x. Portanto, todas as variáveis ​​têm um endereço na memória. É um valor inteiro que permite ao sistema referenciar sua variável com base no nome que você deu a ela ...

Então, quando você cria uma variável usando esta sintaxe:

teste interno = 10;

Isso "cria" uma variável reservando memória suficiente para interromper seu inteiro. E então ele definirá esse número inteiro para 10. A localização do endereço desta variável está "oculta" do programador porque normalmente não nos importamos onde ela está armazenada, mas seu programa cria uma tabela que diz que o teste de número inteiro está em locais 2035 por exemplo. O 2035 é apenas um valor arbitrário que escolhi. O valor real depende de muitas coisas, mas não é muito importante.

Então, se você passar sua variável por endereço usando * x, o que acontece é que a variável em sua função terá o valor de 2035 porque esse é o local do endereço de teste ...

Se você passar sua variável por referência usando & x, então o que acontecerá é que uma referência à variável é passada, então a variável em sua função será na verdade a mesma variável externa .... então se você mudar x em sua função, então o o valor do teste mudaria fora ... o valor 10 não o 2035 ...

Espero que isso faça sentido. Sinta-se à vontade para entrar em contato comigo se precisar de algum esclarecimento ou tiver alguma outra dúvida.

Boa sorte!

Alguém pode explicar? Qual é a diferença entre 2 linhas.

void swap (int * x, int * y).

void swap (int & x, int & y).