typedef函数指针那些事
2014-07-17 11:30
288 查看
首先来介绍下函数指针:
函数指针是指向函数的指针变量,即本质是一个指针变量。
int (*f) (int x); /* 声明一个函数指针 */
f=func; /* 将func函数的首地址赋给指针f */
使用的时候可以直接通过(*f)(x)这样的形式。网上有很多的函数指针资料,就不多说了。
当我们在函数指针前加上typedef,就变成什么样了呢?
比如typedef INT32 (*WNDPROC)(HWND, INT32, WPARAM, LPARAM);
这条语句的意思是定义了一个类型WNDPROC,这个类型的对象是一个函数的指针,函数的返回值为INT32,参数类型为HWND, INT32, WPARAM, LPARAM。
举个例子:
typedef char (*PTRFUN)(int);
PTRFUN pFun;
char glFun(int a)
{
printf("%d\n",a);
return;
}
void main()
{
pFun = glFun;
pFun(2);
}
程序结果打印2出来。
typedef的作用相当于给函数起了个别名,在某些情况下有利于代码简化,跨平台调用。
比如你用typedef定义了一个函数指针,而程序中有很多同一类型的函数(即函数返回和参数类型一致,但是作用和功能不同),
我们可以将函数的地址复制给指针,通过调用指针来调用函数,在一定的代码架构上简化了代码(比如针对不同的情况调用同
一类型的函数,我们只要针对每一种情况赋值,而不用针对每一种情况去调用一种函数)。
函数指针是指向函数的指针变量,即本质是一个指针变量。
int (*f) (int x); /* 声明一个函数指针 */
f=func; /* 将func函数的首地址赋给指针f */
使用的时候可以直接通过(*f)(x)这样的形式。网上有很多的函数指针资料,就不多说了。
当我们在函数指针前加上typedef,就变成什么样了呢?
比如typedef INT32 (*WNDPROC)(HWND, INT32, WPARAM, LPARAM);
这条语句的意思是定义了一个类型WNDPROC,这个类型的对象是一个函数的指针,函数的返回值为INT32,参数类型为HWND, INT32, WPARAM, LPARAM。
举个例子:
typedef char (*PTRFUN)(int);
PTRFUN pFun;
char glFun(int a)
{
printf("%d\n",a);
return;
}
void main()
{
pFun = glFun;
pFun(2);
}
程序结果打印2出来。
typedef的作用相当于给函数起了个别名,在某些情况下有利于代码简化,跨平台调用。
比如你用typedef定义了一个函数指针,而程序中有很多同一类型的函数(即函数返回和参数类型一致,但是作用和功能不同),
我们可以将函数的地址复制给指针,通过调用指针来调用函数,在一定的代码架构上简化了代码(比如针对不同的情况调用同
一类型的函数,我们只要针对每一种情况赋值,而不用针对每一种情况去调用一种函数)。
相关文章推荐
- 关于C++中函数指针的使用(包含对typedef用法的讨论)
- 关于C++中函数指针的使用(包含对typedef用法的讨论)
- typedef与函数指针 (转载)
- typedef使用大全3(指向函数的指针)//typedef的使用可以隐藏复杂的函数指针语法
- typedef与函数指针
- 关于C++中函数指针的使用(包含对typedef用法的讨论)
- 关于C++中函数指针的使用(包含对typedef用法的讨论)
- typedef与函数指针
- c++ typedef 函数指针详细说明
- typedef使用大全3(指向函数的指针)
- typedef使用大全3(指向函数的指针)
- typedef使用(指向函数的指针)
- c++ typedef 函数指针
- c++ typedef 函数指针详细说明
- typedef定义函数指针
- 关于C++中函数指针的使用(包含对typedef用法的讨论)
- typedef和指向函数的指针(好文)(1读)
- typedef使用大全(指向函数的指针)
- typedef在函数指针上的应用
- 关于函数指针和typedef