Ciao a tutti ragazzi
mi potete spiegare perchè per assegnare un valore ad una variabile si usa questo modo?
non capisco perchè nel prototipo si scrive

codice:
#include <iostream>
using namespace std;

class conto{
	friend void impostax(conto &, int);  //dichiarazione di funzione friend  perchè si scrive così? con & 

public:
	conto(){x=0;} //costruttore

	void stampa()const { cout<<x<<endl; }

private:
	int x; //dato membro

};

void impostax (conto &c, int val)            qui sta il problema: perchè si scrive così &c? cosa si sta facendo? 
//può modificare il dato private di conto, poichè impostax
//è dichiarata funzione friend di conto
{
	c.x=val; qui accedo alla x, ma perchè metto .c? 
}

int main()
{       conto contatore;

	cout<<"contatore.x dopo aver istanziato : ";
	
	contatore.stampa();
	
	cout<<"contatore.x dopo aver chiamato impostax :";
	
	impostax (contatore, 8 ); qui do valore 8 a val, e poi contatore? 
	
	contatore.stampa();

	return 0;
}