# Function with Parameters and Return

Some functions are designed to do a job and send a return value back to the function call.  For example, a function might check a pushbutton and return its state.  Or, a function might receive some values through its parameters, use them in a calculation, and return the answer — we will try this.

We will also try a neat coding technique: setting a variable as equal to a function call.  This is a quick and efficient way to call a function and get its return value into a variable.

• Open the project Function with Parameters and Return Value.side.
• Read the code.  What do you think it will do?
• Click the Run with Terminal button, and compare the result from the Propeller with your prediction.
```/*
Function with Parameters and Return Value.c

Pass parameters to a function, let it do its job, and display the result
it returns.
*/

#include "simpletools.h"                      // Include simpletools

int adder(int a, int b);                      // Function prototype

int main()                                    // main function
{
}

{
int c = a + b;                              // Add two values
return c;                                   // Return the result
}
```

# How it Works

The adder function’s definition is int adder(int a, int b).  The (int a, int b) part means that a function call to adder must pass two int values.  The int at the beginning means adder will send back, or return, an int value to the function call.

Take a close look at the line inside main that sets int n equal to an adder function call.  adder(25, 17) passes those two values to the adder function's a and b parameters. There, a + b adds the values together, and the result is assigned to a local variable with int c =.  At that point, c = 42.

return c sends the value of c back to take the place of the original function call in main. So,  int n = adder(25, 17) evaluates to n = 42.

The next line in main, a print statement, displays the value of n.  Your SimpleIDE Terminal will display "adder's result is 42" # Did You Know?

Local Options — The function’s parameter list is not your only chance to declare local variables.  For example, int n = adder... and also (int a, int b) in the adder function are local variables.

Type Less — The adder function could have been even shorter.  You could replace the two lines in its code block with return a + b; no need for int c at all.

Return value from main? — Notice all of our programs begin with int main(), by C convention. In computer system programming, a main routine might return a 0 tell a higher-level program that it executed.  Since we are programming a stand-alone microcontroller we don't need to have main return anything.  In fact, void main() and just main() will also work, though the C compiler might give you a warning message in the Status window.

# Try This

Here are some variations on the main function that use the result adder returns in different ways.

• Use the Save Project As button to make a copy of your project and save it into the My Projects folder.
• Modify the code as shown below, and try to predict the results.
• Use the Run with Terminal button to display the output. Are the actual results the same as what you predicted? 