15. 指针函数和函数指针

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

注意事项:

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.了解设计理念

 

posted @ 2020-04-22 07:50  八转达人  阅读(161)  评论(0编辑  收藏  举报