在C语言当中, 所有的函数(function)参数(arguments)是以“传值(by value)”的方式来传送的。 这意味着传递给被调用函数的参数值是存储在临时变量当中的而不是原变量。 这使得其与一些以“传址调用(call by reference)”的语言有着特性上的差异(在这些传址调用的程序中, 被调用的程序能直接访问原变量, 而不是和传值调用一样 采用临时变量来存储变量的数据)。
最主要的区别在于, 在C语言当中, 被调用的函数(called function)不能直接更改调用函数(calling function)当中的变量; 它只能更改属于它自己的临时变量(传值参数)。
当然, 有必要的话, 我们还是可以让函数可以变更它的参数变量的。 前提是: 调用者必须提供对应变量的地址(address)(严格来说, 是一个指向该变量的指针(pointer)), 同时被调用的函数也要声明该参数为指针, 然后被调用的函数就能通过这样的方式间接地访问原变量了。
不过, 要注意的是, 数组(array)的情况。 当一个数组的名字作为一个函数的参数的时候, 传递给被调用函数的值是数组开头的位置(location)或者说地址(address)。 如果要访问或者变更数组当中的制定元素的值, 我们可以采用输入数组下标(subscript)的方式。

参考: 《The C Programming Language》- Chapter 1.8