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;

=&add2; //結構體函數指針賦值

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

}