函数指针数组的定义
来源:互联网 发布:php 获取当前端口号 编辑:程序博客网 时间:2024/05/21 09:45
第一种,标准方法:
{
分析:函数指针数组是一个其元素是函数指针的数组。那么也就是说,此数据结构是是一个数组,且其元素是一个指向函数入口地址的指针。
根据分析:首先说明是一个数组:数组名[]
其次,要说明其元素的数据类型指针:*数组名[].
再 次,要明确这每一个数组元素是指向函数入口地址的指针:函数返回值类型(*数组名[])().请注意,这里为什么要把“*数组名[]”用括号扩起来呢?因为圆括号和数组说明符的优先级是等同的,如果不用圆括号把指针数组说明表达式扩起来,根据圆括号和方括号的结合方向,那么 *数组名[]()说明的是什么呢?是元素返回值类型为指针的函数数组。有这样的函数数祖吗?不知道。所以必须括起来,以保证数组的每一个元素是指针。
}
第二种,蒙骗法:
尽管函数不是变量,但它在内存中仍有其物理地址,该地址能够赋给指针变量。获取函数方法是:用不带有括号和参数的函数名得到。
函数名相当于一个指向其函数入口指针常量。 那么既然函数名是一个指针常量,那么就可以对其进行一些相应的处理,如强制类型转换。
那么我们就可以把这个地址放在一个整形指针数组中,然后作为函数指针调用即可。
完整例子:
#include "stdio.h"
int add1(int a1,int b1);
int add2(int a2,int b2);
int main(int argc,char* argv[])
{
int numa1=1,numb1=2;
int numa2=2,numb2=3;
int (*op[2])(int a,int b);
op[0]=add1;
op[1]=add2;
printf("%d %d\n",op[0](numa1,numb1),op[1](numa2,numb2));
getch();
}
int add1(int a1,int b1)
{
return a1+b1;
}
int add2(int a2,int b2)
{
return a2+b2;
}
再给出常用的C变量的定义方式:
a) 一个整型数(An integer)
b) 一个指向整型数的指针(A pointer to an integer)
c) 一个指向指针的的指针,它指向的指针是指向一个整型数(A pointer to a pointer to aninteger)
d) 一个有10个整型数的数组(An array of 10 integers)
e) 一个有10个指针的数组,该指针是指向一个整型数的(An array of 10 pointers tointegers)
f) 一个指向有10个整型数数组的指针(A pointer to an array of 10 integers)
g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takesan integer as an argument and returns an integer)
h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数( An array of tenpointers to functions that take an integer argument and returnan
integer )
答案是:
a) int a; // An integer
b) int *a; // A pointer to an integer
c) int **a; // A pointer to a pointer to an integer
d) int a[10]; // An array of 10 integers
e) int *a[10]; // An array of 10 pointers to integers
f) int (*a)[10]; // A pointer to an array of 10 integers
g) int (*a)(int); // A pointer to a function a that takes aninteger argument and returns an integer
h) int (*a[10])(int); // An array of 10 pointers to functions thattake an integer argument and return an integer
转自:http://blog.sina.com.cn/s/blog_71e266c20100lw0q.html
- 函数指针数组的定义
- 函数指针数组的定义
- 函数指针数组的定义
- 函数指针数组的定义
- 函数指针数组的定义
- 函数指针数组的定义
- 函数指针数组的定义
- 关于函数指针数组的定义
- 函数指针与函数指针数组的定义与使用
- 函数指针以及函数指针数组的定义与使用
- 函数指针与函数指针数组的定义与使用
- 理解数组,结构 ,函数指针,指针函数,数组指针,指针数组,结构指针的定义和实现
- 数组指针的定义
- “指针数组”和“数组指针”的区别、函数指针定义及引用
- 函数指针的定义
- 函数指针数组和C变量的定义方式
- 数组指针的概念定义
- 数组指针定义的理解
- 学习Mockito框架
- iOS学习笔记28—IOS单例模式
- 【Linux基础】Linux系统安装过程(下)
- Struts2,拦截器拦不住的异常?!
- 使用 Spring 进行单元测试
- 函数指针数组的定义
- MVC3中 ViewBag、ViewData和TempData的使用和区别
- HashMap
- struts快速入门——笔记
- 在Linux下搭建安装安卓开发环境
- 上篇日本人经营之道 一前言:谁是世界上最能赚钱的人?
- Jquery 40 Good Effect UI !!
- 收集IIS配置错误-- 您未被授权查看该页
- 2013 深圳杯数学建模夏令营 A 题论文