C语言 函数指针和指针函数及Main()函数 | 您所在的位置:网站首页 › c语言定义函数指针 › C语言 函数指针和指针函数及Main()函数 |
正文 先来看看两者的定义以及说明。 指针函数 定义 指针函数,简单的来说,就是一个返回指针的函数,其本质是一个函数,而该函数的返回值是一个指针。 声明格式为:类型标识符 *函数名(参数表) 这似乎并不难理解,再进一步描述一下。 看看下面这个函数声明: int fun(int x,int y);这种函数应该都很熟悉,其实就是一个函数,然后返回值是一个 int 类型,是一个数值。 接着看下面这个函数声明: int *fun(int x,int y);这和上面那个函数唯一的区别就是在函数名前面多了一个*号,而这个函数就是一个指针函数。其返回值是一个 int 类型的指针,是一个地址。 这样描述应该很容易理解了,所谓的指针函数也没什么特别的,和普通函数对比不过就是其返回了一个指针(即地址值)而已。 指针函数的写法: int *fun(int x,int y); int * fun(int x,int y); int* fun(int x,int y); 这个写法看个人习惯,其实如果*靠近返回值类型的话可能更容易理解其定义。 示例 (由于本人习惯于 Qt 中进行开发,所以这里为了方便,示例是在 Qt 工程中写的,其语法是一样的,只是输出方式不同) 来看一个非常简单的示例: 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 (*fun)(int x,int y);函数指针是需要把一个函数的地址赋值给它,有两种写法: fun = &Function; fun = Function; 取地址运算符&不是必需的,因为一个函数标识符就表示了它的地址,如果是函数调用,还必须包含一个圆括号括起来的参数表。 调用函数指针的方式也有两种: x = (*fun)(); x = fun();两种方式均可,其中第二种看上去和普通的函数调用没啥区别,如果可以的话,建议使用第一种,因为可以清楚的指明这是通过指针的方式来调用函数。当然,也要看个人习惯,如果理解其定义,随便怎么用都行啦。 示例 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() |
CopyRight 2018-2019 实验室设备网 版权所有 |