在C语言中,可以很方便地把指针和函数结合起来使用。指针可以作为函数参数,也可以作为函数的返回值,还可以定义函数指针,使其指向某个函数。
1.指针作为函数参数
采用指针做参数,可以传递参数的地址,实现由形参修改实参的效果。
当调用形参是指针变量的函数时,将实参变量地址传给形参指针变量,调用结束,就实现了由形参修改实参的效果。
例如:下面的程序段。
}
在该程序段中实参p和形参a都是指针变量。先使实参指针变量p指向数组num,p的值是&num[0],然后将p的值传送给形参指针变量a,a的初始值也是&num[0]。通过a的值的改变,可以使a指向数组 num的任一元素。
2.通过传送地址值在被调用函数中直接改变调用函数中的变量的值
通过传送地址值,可以在被调用函数中对调用函数中的变量进行引用。利用这种形式可以把两个或两个以上的数据从被调用函数返回到调用函数。
例如:下面的程序段。
从此例可知,C语言程序中可以通过传送地址的方式在被调用函数中直接改变调用函数中的变量的值,从而达到函数之间数据的传递。
3.返回指针的函数
当一个函数的返回值是一个指针(地址)时,这种函数称为指针型函数。
指针型函数的形式如下:
类型名 *函数名(参数表列)(www.xing528.com)
对指针型函数的定义和说明,只需在函数名前加上“*”即可,其调用方法与一般函数一样,在指针型函数中,通常使用return语句返回指针值或地址值。
例如:下面的程序段。
这里定义了一个指针型函数max,它的返回值指向一个int型。该函数中定义了一个int型指针变量c,比较两个形参,将较大的赋值给c。在主函数中将输入的指针变量x和y作为实参,在printf语句中调用max函数并把实参x和y的值传送给形参a和b。max函数中的 return语句把c指针返回主函数输出。
4.指向函数的指针
C语言中的函数名就是该函数所占内存空间的起始地址。可以将函数的起始地址赋给指针变量,然后通过指针变量调用该函数。
指向函数的指针变量称为“函数指针变量”,其形式为如下:
类型名 (*指针变量名)(参数表列)
定义了一个指针变量,该指针指向函数,该函数返回指定类型的值。例如:
int (*fpt)( ); //fpt是一个指向函数的指针,该函数返回值是整型
函数指针变量定义后,可以把函数名赋给该指针,在通过(*指针变量名)(实参表列)形式调用该函数。
总之,常用指针的定义及其含义如下表6-1所示。
表6-1 常用指针表
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。