 Consider this program, which calls a function that multiplies a number by 3 and prints the result. Let's run this program and we find out that 14 times 3 is 42. What do you think will be in the variable number when we finish this code? Number is being passed in to parameter n and we change n inside the function body. Will that change the value of the number variable? Let's put in some code to find out. Rebuild. And when we run the program, we find that number has not been changed. That's because functions use something named call by value. Here's what's happening behind the scenes. First, number is set to 14. The next line calls the triple function with number as the argument. When the triple function is called, it needs an integer parameter n and it creates that variable. This variable n belongs to the function. It is local to the function. The value of the argument is copied into the parameter. The multiplication does change the value of n, which is a copy of the original. The printf statement prints the value of n, which is now 42. When the triple function ends, the parameter and any variables you might have declared in the function body go away. We return to the main function and proceed to the next statement. It prints the value of number, which is still 14. It hasn't been modified. But wait, you might ask. If functions get a copy of the original, how can scanf change the value of a variable? Scanf works because it gets a copy of the memory address of the variable and can access that location directly. In later chapters, you'll find out how to do this trick in your own functions. But for now, remember that c uses call by value. Parameters always receive a copy of the argument's value.