数组指针和指针数组,函数指针和指针函数

来源:互联网 发布:园林设计软件图库 编辑:程序博客网 时间:2024/06/04 18:16

1、指针函数

指针函数,说明本身是函数,返回值是指针,格式如下:

类型说明符 *TTTT(参数)

由于"*"的优先级低于"()"的优先级,因而"TTTT"首先和后面的"()"结合,表示"TTTT"是一个函数,其前缀运算符星号"*"表示其返回值为指针。

2、函数指针

函数指针,说明本身是指针,指向函数的指针,格式如下:

类型说明符 (*TTTT)(参数)

 

在C++类中使用函数指针,格式如下:
返回类型(类名::*新类型)(参数表)

在这里,指针的定义与使用都加上了“类限制”或“对象”,用来指明指针指向的函数是那个类的
class CA
{
 public: 
     int ADD(int a, int b){return a + b;}
}; 
  
void main()

     CA ca;
     int(CA::*pFun)(int, int);
    

     pFun = &CA::ADD;
     (ca.*pFun)(1, 2);
}

 

通过括号强行将"TTTT"首先与"*"结合,表示"TTTT"是一个指针,接着与后面的"()"结合,说明该指针指向的是一个函数,然后再与前面的"类型说明符"结合,也就是说,该函数的返回值是"类型说明符"类型。

3、指针数组

指针数组,说明本身是数组,数组内容是指针,格式如下:

类型说明符 *变量名[维数];

4、数组指针

数组指针,说明本身是指针,指向数组的指针,格式如下:

类型说明符 (*数组指针名)[维数];

 

例子:

int Add(int, int);

typedef int(*FUN)(int, int);

 函数指针赋值。

函数名可以理解为该类型函数的指针。当然,取地址操作符作用于函数名上也能产生指向该类型函数的指针。也就是说下面两种赋值都是可行的:

FUN fun = Add;
FUN fun = &Add;

 函数调用。

无论是用函数名调用,还是用函数指针调用,还是用显式的指针符号调用,其写法是一样的:

Add(1, 2);

fun(1, 2);

(*fun)(1, 2);

 

 

 

 

 

原创粉丝点击