2024年5月30日发(作者:)

c语言符号函数

符号函数符号函数( symbol function)表示指针或引用是可变

的,这些可变性体现为操作的多态性。符号函数分为两类:成员函数

和局部变量的函数。成员函数允许参数传递,但不允许返回值。例如,

在常量中加了一个指针或引用时,可将该常量视为全局变量。这样就

可以由系统调用时动态地决定对其赋值。这时全局变量就等于是符号

函数。因此,定义函数的语句格式可以简化为:声明一个函数:形如

declare( fn fn);如果想把定义写成类似于如

下形式:声明一个函数: fn var name;后者仅仅只包含名

字,不含任何具体的函数形式,这样的函数无法调用。同时,该函数

不能访问全局变量。

符号函数有两种方法:一是以库函数的形式来定义;二是直接用

operator<,如:声明一个用户自定义函数: fn i;前者定义很简单,

用户可随意定义。但必须声明在头文件中,因此头文件的编写十分麻

烦。而且不能进行修改和扩充。

那么,究竟怎样才能使用户定义的函数比较灵活、高效呢?我们

先来看看函数的初始化问题。函数被调用后,必须要保证存放调用的

参数的指针不再被用来做下次调用。一般我们采取以下几种方法解决:

一是将当前指针置零,如:函数参数如果没有指针的话,就要重新初

始化,并提供一个新的指针给用户,然后才能进行下一次调用。

另外,对于可变长的参数,用户可以给出全局指针。对于参数为

整型数据的函数,用户可以提供一个特殊的指针。当用户提供的指针

- 1 -

与函数参数相匹配时,函数就按照当前指针执行下去,而不管参数原

来的内容。

通常我们在定义用户自定义函数时,应尽可能选择一些比较简单

的函数,这样就会得到更高的效率。如:在我们编写的一个函数中,

就采用了如下形式:声明一个函数: fn sum fun s;函数的定义不

难看出,它与普通函数最大的区别是将指针用const来代替。我们还

可以考虑,在调用函数之前,能不能将指针先送给调用函数的指针,

然后调用函数再从调用指针中读取参数,这样可以避免再次访问调用

函数的参数,又节省了系统资源。在第一次调用时,将指针置为0,

然后再执行函数的调用,也是一种不错的办法。当然,函数中也可以

包含返回类型,这样就不用指针了,但是这样做会增加程序的复杂度。

- 2 -