C语言函数指针变量
2013-12-06 14:56
162 查看
在C语言中,一个函数总是占用一段连续的内存区,而函数名就是该函数所占内存区的首地址。我们可以把函数的这个首地址(或称入口地址)赋予一个指针变量,使该指针变量指向该函数。然后通过指针变量就可以找到并调用这个函数。我们把这种指向函数的指针变量称为“函数指针变量”。
函数指针变量定义的一般形式为:
类型说明符 (*指针变量名)();
其中“类型说明符”表示被指函数的返回值的类型。“(* 指针变量名)”表示“*”后面的变量是定义的指针变量。最后的空括号表示指针变量所指的是一个函数。例如:
int (*pf)();
表示pf是一个指向函数入口的指针变量,该函数的返回值(函数值)是整型。
【例10.31】本例用来说明用指针形式实现对函数调用的方法。
从上述程序可以看出用,函数指针变量形式调用函数的步骤如下:
先定义函数指针变量,如后一程序中第9行 int (*pmax)();定义 pmax为函数指针变量。
把被调函数的入口地址(函数名)赋予该函数指针变量,如程序中第11行 pmax=max;
用函数指针变量形式调用函数,如程序第14行 z=(*pmax)(x,y);
调用函数的一般形式为:(*指针变量名) (实参表)
使用函数指针变量还应注意以下两点:
函数指针变量不能进行算术运算,这是与数组指针变量不同的。数组指针变量加减一个整数可使指针移动指向后面或前面的数组元素,而函数指针的移动是毫无意义的。
函数调用中"(*指针变量名)"的两边的括号不可少,其中的*不应该理解为求值运算,在此处它只是一种表示符号。
函数指针变量定义的一般形式为:
类型说明符 (*指针变量名)();
其中“类型说明符”表示被指函数的返回值的类型。“(* 指针变量名)”表示“*”后面的变量是定义的指针变量。最后的空括号表示指针变量所指的是一个函数。例如:
int (*pf)();
表示pf是一个指向函数入口的指针变量,该函数的返回值(函数值)是整型。
【例10.31】本例用来说明用指针形式实现对函数调用的方法。
int max(int a,int b){ if(a>b)return a; else return b; } main(){ int max(int a,int b); int(*pmax)(); int x,y,z; pmax=max; printf("input two numbers:\n"); scanf("%d%d",&x,&y); z=(*pmax)(x,y); printf("maxmum=%d",z); }
从上述程序可以看出用,函数指针变量形式调用函数的步骤如下:
先定义函数指针变量,如后一程序中第9行 int (*pmax)();定义 pmax为函数指针变量。
把被调函数的入口地址(函数名)赋予该函数指针变量,如程序中第11行 pmax=max;
用函数指针变量形式调用函数,如程序第14行 z=(*pmax)(x,y);
调用函数的一般形式为:(*指针变量名) (实参表)
使用函数指针变量还应注意以下两点:
函数指针变量不能进行算术运算,这是与数组指针变量不同的。数组指针变量加减一个整数可使指针移动指向后面或前面的数组元素,而函数指针的移动是毫无意义的。
函数调用中"(*指针变量名)"的两边的括号不可少,其中的*不应该理解为求值运算,在此处它只是一种表示符号。
相关文章推荐
- c++模版笔记
- Effective C++ 第二版 37)不要重定义非虚函数 38)不要重定义缺省参数值 39)避免向下转换
- 【VC】CStatic 实现在图标处用数字来提示信息数量!
- 状态机之C++解析
- C++ 标准库 vector 使用方法
- c与c++符合表差异
- c++基础知识
- IDE Visual studio 优化---关于VS 的Debug版本和Release【疑惑】
- C++基础学习笔记----第九课(构造函数)
- 排序生成最小的数
- 用C++程序实现复杂表达式的计算问题
- c语言中关于指针的一些乱七八糟的代码 VC6中直接编译运行!
- 谁是你的潜在朋友
- c语言---十进制转二进制
- c语言实现二进制数转换为十进制
- STL源码剖析之哈希表 hashtable【2013.12.06】
- VS2010 VC++ 项目添加引用 出现 Internal CPS Error问题原因及解决办法
- C++虚析构函数的作用
- 约瑟夫问题(c++)
- 函数嵌套(c++)