C语言

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

时间:2025-03-21 15:26:18 C语言 我要投稿
  • 相关推荐

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

  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));

  }

【C语言结构体中的函数指针】相关文章:

C语言指针函数和函数指针详解12-08

C语言的指针型函数02-20

C语言函数指针变量06-04

C语言中指针函数与函数指针有何区别02-28

C语言函数指针与回调函数详解03-26

初步剖析C语言编程中的结构体02-18

讲解C语言编程中的结构体对齐01-17

C语言的指针12-21

C语言结构体定义06-25