Q:

What does ampersand mean in function call?

I'm new to programming in C and I was looking at some code. I was wondering what the following means:
adjust(&total, adjustmentFactor);

I know that total and adjustmentFactor are both doubles, but since that this function does assign output to a variable, I'm assuming that the function changes what total points to? If that's what it does, how would you change it if you were to implement adjust?

A:

Yes, you are right:  the ampersand takes the address of an lvalue (a variable) and passes it as pointer.   
Your adjust() function would look like:  
void adjust(double *a, double f) {
   ... do a lot of stuff
   *a = *a * f/2+1.0;     // dummy formula that will change the content 
   ...   
}; 

So in the function you'd use *a every time you'd want to use the value pointed at by the first argument, and everytim you want to assign a new value to the original variable.  

