for this class and any quizes or test you can follow these guidlines

RETURN TYPES

given:
int function1(int a);

if I ignore the return type I am calling this function wrong

function1(55);// im ignoring what is being returned by the function, WRONG 

int x = function1(55);  // now im storing the value returned into x, CORRECT 

-----------------------------------------------------

given:
void function1(int a);

this function returns void
if I try to store the value this returns I am doing it wrong

int x = function(55); // 100% wrong always
the function returns void   you cant set a variable to void 

function1(55);  // this is how it should be called , CORRECT



-----------------------------------------------------------
INPUT  and INPUT/OUTPUT parameters

pass by value parameters are ALWAYS INPUT

pass by const refference are ALWAYS INPUT

pass by pointer to const are ALWAYS INPUT 

pass by reference and pass by pointer are INPUT/OUTPUT





void (int a, int  b);// input, input 
void (int a, const int & b); // input , input
void (const int * a, int b); // input , input
void (int a, int & b);// input, input/output
void (int a, int * b);// input, input/output



---------------------------------------------------------

scenario 
we want a function we can give 2 input values
and it will tell us which is larger

which is larger 5 or 100

int one =5;
int two = 100;
int result;



there are several different ways to do this

int Larger1(int a, int b);
a and b are input and it returns the result

result = Larger1(one, two);

//----------------------------

void Larger2(int a, int b, int &c);

a and b are input and c is the result
why is c the result becase it is the ONLY input/output variable
there is no other possible way that it could work

Larger2(one,two,result);
notice I ignore the return type because its void 


//----------------------------

void Larger2(int & a, int b, int c);

b and c are input and a is the result
why is a the result becase it is the ONLY input/output variable
there is no other possible way that it could work

Larger2(result,one,two);
notice I ignore the return type because its void 



//----------------------------

void Larger3(int * a, int b, int c);

b and c are input and a is the result
why is a the result becase it is the ONLY input/output variable
there is no other possible way that it could work



int * temp = &result;
Larger3(temp,one,two);
notice I ignore the return type because its void 

or without making a pointer 

Larger3(&result,one,two);// i pass & result... or the address of result because you can pass the address for a * parameter



//------------------------------------

void Larger4(int & a, int & b, int &c);

which one is the result... there is no way to know.. this is wrong
there should be 2 input and one input/output 
if we are trying to have a function that tells us the larger of 2 values


void Larger4(const int & a, int & b,const int &c);
here b is the only input/output parameter and that must be our result