C语言 函数指针和指针函数及Main()函数 您所在的位置:网站首页 c语言定义函数指针 C语言 函数指针和指针函数及Main()函数

C语言 函数指针和指针函数及Main()函数

2023-07-29 23:27| 来源: 网络整理| 查看: 265

正文 先来看看两者的定义以及说明。

指针函数 定义 指针函数,简单的来说,就是一个返回指针的函数,其本质是一个函数,而该函数的返回值是一个指针。 声明格式为:类型标识符 *函数名(参数表)

这似乎并不难理解,再进一步描述一下。 看看下面这个函数声明:

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 实验室设备网 版权所有