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