 
 
 
 
 
 
C- kielessä muuttujaparametrit toteutetaan osoittimien avulla. Pascalissahan vastaava ilmiö saatiin aikaiseksi VAR-määrittelyllä. C++:ssa on VAR-määrittelyä vastaava viittaustapa muuttujiin: referenssimuuttujat eli viitemuuttujat.
Seuraavassa perinteinen vaihtoesimerkki- ohjelma on kirjoitettuna sekä C:llä että C++:lla:
C- versio ilman referenssimuuttujia:
	/* swap.c */
	#include <stdio.h>
	
	void swap(int *a, int *b)
	{
	  int t;
	  t = *a; *a = *b; *b = t;
	}
	
	int main(void)
	{
	  int x=3, y=4;
	  swap(&x,&y);
	  printf("%d %d\n",x,y);
	  return 0;
	}
C++ -versio referenssimuuttujien avulla:
	/* swap.cpp */
	#include <stdio.h>
	
	void swap(int &a, int &b)
	{
	  int t;
	  t = a; a = b; b = t;
	}
	
	int main(void)
	{
	  int x=3, y=4;
	  swap(x,y);
	  printf("%d %d\n",x,y);
	  return 0;
	}
Referenssimuuttujien etuna on siis erityisesti se, että aliohjelma voidaan
muuttaa toimimaan joko arvoparametreja käyttäväksi tai
muuttujaparametreja käyttäväksi vain muuttamalla aliohjelman
prototyypissä muuttujien tyyppiä.Tosin osoitemuuttujaa käytettäessä kutsuja erityisesti korostaa sitä, että muuttujien arvot tulevat muuttumaan (vrt. swap(&x,&y); tai swap(x,y);)!
Myös seuraava käyttö on mahdollista, mutta sitä ei suositella:
	/* REFERENC.CPP */
	#include <stdio.h>
	
	int main(void)
	{
	  int i=4; int &p=i;
	  p = 6;
	  printf("i=%d p=%d\n",i,p); // Tulostaa i=6 p=6
	  return 0;
	}
 
 
 
 
 
