16. 指针函数和函数指针

Posted nutshelln

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了16. 指针函数和函数指针相关的知识,希望对你有一定的参考价值。

一、指针函数:返回指针的函数

注意事项:

1.不应该返回参数的地址:

如果返回的指针保存了参数的地址,则当函数调用完成后,返回的指针引用了一个栈 外地址,函数调用完成后参数会被释放。此地址会被新的函数占用并修改。

 

2.不应该返回局部变量的地址:

如果返回的指针保存了局部变量的地址,则当函数调用完成后,返回的指针引用了一个栈外地址,函数调用完成后局部变量会被释放。此地址会被新的函数占用并修改。

 

 

二、函数指针:指向函数的指针

函数第一条被执行的地址称为函数的首地址。

函数名表示函数首地址的常量。

函数指针可以在运行时修改行为。

业务(行业逻辑)和界面分离,

业务(行业逻辑)和常用算法分离。

1.熟悉基本语法

要想把一个函数赋值给函数指针,必须满足:

A.同参数个数

B.同参数类型

C.同参数顺序

D.同返回值

E.同调用约定

这样的函数指针,才是同类型的函数指针。

函数指针常用于接口设计。

int _cdecl Add(int ary[], int) {

//...

}

int(_cdecl * PFNFUNC)(int ary[], int) = Add;

或者

typedef int(_cdecl *PFNFUNC)(int ary[], int);

PFNFUNC func = Add;

func(...)//间接调用

 

 

宏是编译前,预处理器对源码文本做查找替换。

typedef可以取别名,进一步说明其类型意义时使用。它让编译器实实在在地认为有了 这个新类型。

typedef int Length;

typedef float Height;

Length length = 100;

Height height = 195.4;

生成的预处理文件依然保留了以上4条语句,未替换。

2.掌握内存原理

3.了解设计理念

 

以上是关于16. 指针函数和函数指针的主要内容,如果未能解决你的问题,请参考以下文章

C++ Primer 5th笔记(chap 16 模板和泛型编程)函数指针和实参推断

函数和指针

向上转换函数指针是不是安全?

C++ 指针、引用和函数调用

成员函数指针和继承

在cpp的静态函数中访问这个指针