函数指针和指针函数

参考了@函数指针和指针函数用法和区别luoyayun361的专栏-CSDN博客指针函数

  • 指针函数:简单的来说,就是一个返回指针的函数,其本质是一个函数,而该函数的返回值是一个指针。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
int *fun(int x,int y);
int * fun(int x,int y);
int* fun(int x,int y);

// 使用
typedef struct _Data{
int a;
int b;
}Data;

//指针函数
Data* f(int a,int b){
Data * data = new Data;
data->a = a;
data->b = b;
return data;
}

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//调用指针函数
Data * myData = f(4,5);
qDebug() << "f(4,5) = " << myData->a << myData->b;

return a.exec();
}
  • 函数指针:其本质是一个指针变量,该指针指向这个函数。总结来说,函数指针就是指向函数的指针。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int (*fun)(int x,int y);                  
// 使用
int add(int x,int y){
return x+y;
}
int sub(int x,int y){
return x-y;
}
//函数指针
int (*fun)(int x,int y);

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//第一种写法
fun = add;
qDebug() << "(*fun)(1,2) = " << (*fun)(1,2) ;
//第二种写法
fun = &sub;
qDebug() << "(*fun)(5,3) = " << (*fun)(5,3) << fun(5,3);

return a.exec();
}

如果你对这两个概念的区分不是很清晰也可以这么记:

指针函数与整型函数一样,都是返回一个东西,不同的是指针函数返回的是一个指针。