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 n = adder(25, 17); // Call adder function print("adder's result is = %d", n); // Display adder function result } int adder(int a, int b) // adder 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?
Your Turn
Try including a subtracter function.
- Use the Save Project As button to make a copy of your project named Adder Subtracter Functions.
- Add a forward declaration for subtracter above main.
- Add the subtracter function (which subtracts a from b) below the adder function.
- Call the subtracter function from within main.