加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C语言结构体中的函数指针

(2013-03-20 13:45:19)
标签:

c语言

结构体

成员函数

函数指针

分类: 程序设计语言
结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。所以标准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

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有