函数指针变量_sky 多变量函数指针

函数指针变量_sky 多变量函数指针

在C语言中,一个函数总是占用一段连续的内存区(位于程序的代码区),而函数名就是函数所占内存区的首地址。我们可以把函数的这个首地址(或称入口地址)赋予一个指针变量,使该指针变量指向该函数。然后通过指针变量就可以找到并调用这个函数。我们称这种指向函数的指针变量称为"函数指针变量"。

函数指针变量定义的一般形式为:

类型说明符 (*指针变量名)();

对比普通指针变量定义的一般形式:

类型说明符 *指针变量名;

其中"类型说明符"表示被指函数的返回值的类型。"(*指针变量名)"表示"*"后面的变量是定义的指针变量。最后的空括号表示指针变量所指的是一个函数。

例如:

int (*pf)();

表示pf是一个指向函数入口的指针变量,该函数的返回值(函数值)是整形。

【例10.31】本例用来说明用指针形式实现对函数调用的方法。

#include<stdio.h>

int max(int a, intb)

{

if(a > b) return a;

return b;

}

int main(int argc,char* argv[])

{

int (*pmax)();

int x,y,z;

pmax = max;

printf("input two numbers:n");

scanf("%d%d", &x,&y);

z = (*pmax)(x, y);

printf("maxnum=%dn", z);

return 0;

}

从上述程序可以看出用,函数指针变量形式调用函数的步骤如下:
1) 先定义函数指针变量,如上面程序中 int(*pmax)();定义pmax为函数指针变量。
2)把被调函数的入口地址(函数名)赋予该函数指针变量,如程序中第11行pmax=max;
3)用函数指针变量形式调用函数,如程序第14行z=(*pmax)(x,y);
4) 调用函数的一般形式为:
(*指针变量名)(实参表)
使用函数指针变量还应注意以下两点:
a)函数指针变量不能进行算术运算,这是与数组指针变量不同的。数组指针变量加减一个整数可使指针

动指向后面或前面的数组元素,而函数指针的移动是毫无意义的。
b)函数调用中"(*指针变量名)"的两边的括号不可少,其中的*不应该理解为求值运算,在此处它只是一

种表示符号。

还应该特别注意的是函数指针变量和指针型函数这两者在写法和意义上的区别。

如int(*p)()和int*p()是两个完全不同的量。
a) int(*p)()是一个变量说明,说明p是一个指向函数入口的指针变量,该函数的返回值是整型量,

(*p)的两边的括号不能少。
b)int*p()则不是变量说明而是函数说明,说明p是一个指针型函数,其返回值是一个指向整型量的

指针,*p两边没有括号。作为函数说明,在括号内最好写入形式参数,这样便于与变量说明区别。

  

爱华网本文地址 » http://www.413yy.cn/a/25101015/256009.html

更多阅读

函数指针返回指向函数的指针 指向函数的指针

准确地讲,本文所涉及的内容是C++中较难理解的,本文的目的不是在于将它们解释清楚,因为这需要你循序渐进地做很多练习才可以。看下面一个例子:int (*func(bool real))(int, int) 你觉得它的返回值是什么?这里就涉及到了如何理解指向函数

函数指针及其应用 函数指针的应用

0推荐http://aoqingy.spaces.live.com/blog/cns!153c2d72af27eb1c!295.entryC语言专题(二):函数指针及其应用函数指针:函数的入口地址C程序变量驻留在程序内存空间的某个地址,它所在的地方取决于变量类型(自动变量、静态变量或全局变量等)

二维数组与数组指针的用法 二维数组指针传递

二维数组与数组指针的用法 严格地说,一个指针是一个地址,是一个常量。而一个指针变量却可以被赋予不同的指针值,是变量。但常把指针变量简称为指针。既然指针变量的值是一个地址,那么这个地址不仅可以是变量的地址,也可以是其它数据结构

C指针的声明、赋值和基础操作 函数指针赋值

指针赋值:指针的初始化、赋值是同类型实体(即实体变量)的地址int i=10;int* ip=&amp;i (&amp;表示实体的地址)int* ipt=&amp;10是不可以的,10是实体,而不认可具有空间地址(所以说是实体变量地址才有效,也就是说将某一个const的变量赋值给指

C语言中的static函数 c语言中的变量

内部函数和外部函数函数一旦定义后就可被其它函数调用。 但当一个源程序由多个源文件组成时, 在一个源文件中定义的函数能否被其它源文件中的函数调用呢?为此,C语言又把函数分为两类:一、内部函数如果在一个源文件中定义的函数只能被本

声明:《函数指针变量_sky 多变量函数指针》为网友岁月之沉淀分享!如侵犯到您的合法权益请联系我们删除