Thank you very much!
Now I got something. Does it mean that, whenever a function calls another, it only passes copies of originals to the called function, and what the called function do does not alter the original values in the calling function. But when you use an pointer, as in your example, the called function can operate on the memmory the pointer pointing to, so that it can change the orginal values accordingly.
Am I right? ^_^