Resultado da passagem por valor? [duplicado

Duplicatas possíveis:
passar por referência ou passar por valor?
Pass por referência / valor em C ++

Estou tendo problemas com o método de passagem por valor-resultado. Eu entendo passar por referência e passar por valor, mas não estou muito claro no resultado de passar por valor. Quão semelhante é passar por valor (supondo que seja semelhante)?

aqui é o código

#include <iostream>
#include <string.h>
using namespace std;

void swap(int a, int b)
{

  int temp;
    temp = a;
    a = b;
    b = temp;
}

int main()
{
  int value = 2;
  int  list[5] = {1, 3, 5, 7, 9};


  swap(value, list[0]);

  cout << value << "   " << list[0] << endl;

  swap(list[0], list[1]);

  cout << list[0] << "   " << list[1] << endl;

  swap(value, list[value]);

  cout << value << "   " << list[value] << endl;

}

gora, o objetivo é descobrir qual é o valor de "value" e "list" se você usar o resultado de passagem por valor. (NÃO passa por valor).

questionAnswers(2)

yourAnswerToTheQuestion