A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 瑜尚 中级黑马   /  2016-7-18 10:26  /  928 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。所以,标准C中的结构体是不允许包含成员函数的,当然C++中的结构体对此进行了扩展。那么,我们在C语言的结构体中,只能通过定义函数指针的方式,用函数指针指向相应函数,以此达到调用函数的目的。

1. 函数指针

一般的函数指针可以这么定义:

int(*func)(int,int);

表示一个指向含有两个int参数并且返回值是int形式的任何一个函数指针. 假如存在这样的一个函数:

int add2(int x,int y)

{

return x+y;

}

那么在实际使用指针func时可以这样实现:

func=&add2; //指针赋值,或者func=add2; add2与&add2意义相同

printf("func(3,4)=%d"n",func(3,4));

事实上,为了代码的移植考虑,一般使用typedef定义函数指针类型.

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

FUN func=&add2;

func();

2.结构体中包含函数指针

其实在结构体中,也可以像一般变量一样,包含函数指针变量.下面是一种简单的实现.

#include "stdio.h"

struct DEMO

{

int x,y;

int (*func)(int,int); //函数指针

};

int add2(int x,int y)

{

return x+y;

}

void main()

{

struct DEMO demo;

demo.func=&add2; //结构体函数指针赋值

printf("func(3,4)=%d"n",demo.func(3,4));

}
本内容来自网络大神分享

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马