Parameters can be passed in three ways.
CPU registers can be used - Fast but little data can be passed. In some programming languages the "Register" keyword is used to achieve this.
RAM locations can be used - Slower and recursion may not be possible. In some programming languages the "Static" keyword is used to achieve this. This technique is useful if very large amounts of data are help in RAM. Passing a pointer to the data is more efficient than making a copy of the data on the stack.
The stack can be used - Harder to understand and code but a lot of data can be passed and recursion is possible. Compilers generally use this method by default unless otherwise directed.
The example program uses all three methods to add two numbers together. The example tasks involve all three methods.