STL 源码剖析 笔记 1: 函数指针和类型
2010-04-19 14:28
429 查看
P57 有如下一段代码:
不像函数指针变量定义,也不像函数定义。
可以参考:http://blog.csdn.net/gibbon2000pro/archive/2008/12/11/3489219.aspx
下面对函数指针和类型做一个总结:
函数(指针)变量定义f:void
(*fv) (int)
函数(指针)类型定义FType:typedef
void(*FType) (int), 不能直接把void (*)(int)当做类型来使用。
返回函数的函数的定义:
1. 直接但古怪的形式如下
Void(*f(void (*f)()))(int)
函数为f
输入参数为void (*f)()
返回类型为void (*)(int),
但是不能直接把void (*)(int)当作类型,所以不能写成:
void (*)(int)f(void (*f)())这种形式,所以才会有上面这种古怪的定义。下面typedef来定义函数类型,可以得到一种比较容易理解的形式。
2. typedef的形式
typedefvoid (*FType)f(int)
FType func(FType f)
static void (* set_malloc_handler(void (*f)()) )() { void (* old)() = __malloc_alloc_oom_handler; __malloc_alloc_oom_handler = f; return (old); }
不像函数指针变量定义,也不像函数定义。
可以参考:http://blog.csdn.net/gibbon2000pro/archive/2008/12/11/3489219.aspx
下面对函数指针和类型做一个总结:
函数(指针)变量定义f:void
(*fv) (int)
函数(指针)类型定义FType:typedef
void(*FType) (int), 不能直接把void (*)(int)当做类型来使用。
返回函数的函数的定义:
1. 直接但古怪的形式如下
Void(*f(void (*f)()))(int)
函数为f
输入参数为void (*f)()
返回类型为void (*)(int),
但是不能直接把void (*)(int)当作类型,所以不能写成:
void (*)(int)f(void (*f)())这种形式,所以才会有上面这种古怪的定义。下面typedef来定义函数类型,可以得到一种比较容易理解的形式。
2. typedef的形式
typedefvoid (*FType)f(int)
FType func(FType f)
相关文章推荐
- C++ Standard Stl -- SGI STL源码学习笔记(07) stl_vector 与 一些问题的细化 3 resize函数剖析
- [置顶] STL中的智能指针(Smart Pointer)及其源码剖析: std::unique_ptr
- effective C++笔记之条款24、25:在函数重载和设定参数缺省值间慎重选择、避免指针和数字类型重载
- STL学习笔记之容器--list(二)源码剖析
- C++学习笔记:函数指针语法基础以及函数指针做函数参数的思想剖析
- 《STL 源码剖析》 内存配置器 笔记
- STL源码剖析学习笔记之具备次配置力(sub-allocation)的SGI空间配置器
- STL 源码剖析笔记之仿函数
- C++笔记18之指向函数类型的指针
- C++ Standard Stl -- SGI STL源码学习笔记(06) stl_vector 与 一些问题的细化 2 push_back函数剖析
- nginx 源码学习笔记(三.1)——四种类型结构体中的函数何时调用
- C语言深度剖析学习笔记-指针、数组、内存、函数
- STL学习笔记之容器--deque(二)源码剖析
- C++ 学习笔记(19)new/delete表达式、定位new、typeid、dynamic_cast、type_info、枚举类型、成员函数指针、union、位域、volatile限定符、链接指示
- STL学习笔记之迭代器--iterator(源码剖析)
- jquery源码学习笔记:自执行匿名函数剖析
- C语言的函数指针类型和回调函数-源码
- [置顶] STL中的智能指针(Smart Pointer)及其源码剖析: std::auto_ptr
- 迭代器的型别 《STL 源码剖析》阅读笔记
- STL学习笔记之容器--vector(二)源码剖析