科锐课堂笔记:2017/3/16 二级指针与函数指针
2017-03-16 20:20
323 查看
二级指针:
二级指针顾名思义指针的指针,解引用一个二级指针得到内容是一个一级指针(这样好理解点吧,一级指针就是我们常说的指针),比如一个int**的二级指针解引用得到的是int*的一级指针。
二级指针与数组的关系:
int **ppn;
int ary[3][5];
int *ary2[5];
ary2可以直接赋值给ppn,ary2表示ary2[0]的指针常量,ary2[0]的类型是int*,int*的指针不就是二级int**指针吗,所以类型匹配。ary能不能直接赋值给ppn呢?不能,ary是一个二维数组表示ary[0]的指针常量,ary[0]类型是int[5],所以ary表示一个int (*)[5]的指针,与ppn风马牛不相及当然赋不了值。
二级指针的主要用在函数参数中,用来间接修改传进来的外部指针变量。
函数指针:
函数名表示一个函数指针常量。把一个函数赋值给函数指针时,其参数序列(个数、型类、顺序)、调用约定、返回值都必须相匹配,否则编译器将报错。在定义函数指针时可以使用typedef新增该函数指针类型的关键字(可以看作别名),例如typedef void (__stdcall *FUN)(int),函数指针的用途可以强制一个地址值直接调用过去当函数代码运行,但更多的是用在设计方面,把函数指针参数化,使程序的业务与算法分离,典型的如使用函数指针数组实现流程的自定义。
二级指针顾名思义指针的指针,解引用一个二级指针得到内容是一个一级指针(这样好理解点吧,一级指针就是我们常说的指针),比如一个int**的二级指针解引用得到的是int*的一级指针。
二级指针与数组的关系:
int **ppn;
int ary[3][5];
int *ary2[5];
ary2可以直接赋值给ppn,ary2表示ary2[0]的指针常量,ary2[0]的类型是int*,int*的指针不就是二级int**指针吗,所以类型匹配。ary能不能直接赋值给ppn呢?不能,ary是一个二维数组表示ary[0]的指针常量,ary[0]类型是int[5],所以ary表示一个int (*)[5]的指针,与ppn风马牛不相及当然赋不了值。
二级指针的主要用在函数参数中,用来间接修改传进来的外部指针变量。
函数指针:
函数名表示一个函数指针常量。把一个函数赋值给函数指针时,其参数序列(个数、型类、顺序)、调用约定、返回值都必须相匹配,否则编译器将报错。在定义函数指针时可以使用typedef新增该函数指针类型的关键字(可以看作别名),例如typedef void (__stdcall *FUN)(int),函数指针的用途可以强制一个地址值直接调用过去当函数代码运行,但更多的是用在设计方面,把函数指针参数化,使程序的业务与算法分离,典型的如使用函数指针数组实现流程的自定义。
相关文章推荐
- 课堂笔记——函数与函数指针
- 科锐课堂笔记:2017/3/14 指针
- c笔记11---联合,枚举,堆 malloc,大/小端存储,二级指针,函数指针,qsort 排序,指针数组
- 课堂笔记——指针、数组、函数
- 科锐课堂笔记:2017/4/21 多重继承与智能指针
- 科锐课堂笔记:2017/4/6 函数默认参数与内联
- 二级指针作为函数参数传递初始化的一点总结
- 关于C语言中一,二级指针函数中的使用和c语言中和函数发生调用时,实参和形参都会占用内存吗?
- STL 源码剖析 笔记 1: 函数指针和类型
- C/C++中关于地址、指针和引用变量的学习笔记(四) : 函数
- [笔记]C语言中二级指针简单例子
- 二级指针在函数中的应用(读取文件到BYTE*数组中)
- 【错误记录】二维数组初始化,以二级指针传递函数参数
- 木老师教笨笨课堂——系列讲座(从函数指针到委托) 三、C++语言里的函数指针
- C++学习笔记之指向函数的指针
- [笔记]C语言中二级指针简单例子
- 通过函数参数形式申请二级指针空间, 代码改错
- 函数指针学习笔记
- C语言学习笔记.指针3--指针变量作为函数参数
- effective C++笔记之条款24、25:在函数重载和设定参数缺省值间慎重选择、避免指针和数字类型重载