关于C语言的指针(3):
指针与函数、数据的交换过程
函数调用者与函数之间交换数据的方式有三种:传统值传递,全局变量和指针变量间接引用,不同只要体现在函数的密封性和数据交换方便性的方面。
-
传统数值传递方式:
函数调用者通过向函数参数赋值完成像函数输入数据的过程,函数通过返回值完成想函数调用这输出数据的过程,由于函数参数和函数内部变量与函数调用者内部变量与调用者的内部变量之间是相互独立的,因此,在执行过程中,对函数参数和函数中其他内部变量的引用和赋值操作对函数调用这是透明的。
函数调用者通过向函数参数赋值完成像函数输入数据的过程,函数通过返回值完成想函数调用这输出数据的过程,由于函数参数和函数内部变量与函数调用者内部变量与调用者的内部变量之间是相互独立的,因此,在执行过程中,对函数参数和函数中其他内部变量的引用和赋值操作对函数调用这是透明的。
这种数据交换的方式的好处是是想了函数的封闭性,函数的调用者只能通过像函数参数赋值实现函数调用这至函数的单向数据输入过程,函数只能通过调用函数返回数值实现函数到函数调用这的单向数据输出过程。 -
全局变量
全局变量由于可以被函数调用这和函数共享,因此,函数调用者和函数之间可以通过该全局变量实现数据的交换过程,函数调用这对全局变量的操作结果直接影响函数引用的全局变量的数值,同样,函数对全局变量的操作结果直接影响函数调用者引用的全局变量的数值。
由于C语言没有限定定义的全局变量的数量,函数调用者和函数之间可以通过全局变量完成交换过程,但交换过程的函数调用者和函数之间定义的接口无关,函数调用者和函数之间没有固定的输入输出接口。