C語言結構體中的函式指標與函式

2022-09-08 04:03:07 字數 1250 閱讀 8841

1、函式指標

一般的函式指標可以這麼定義:

int(*func)(int,int);

表示乙個指向含有兩個int引數並且返回值是int形式的任何乙個函式指標. 假如存在這樣的乙個函式:

int add2(int x,int 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 add2(int x,int y)

void main()

上面的檔案儲存為mytest.c,在vc6.0和gcc4中編譯通過.

3、結構體中的函式

既然c++在介紹類的時候說過,類是取代結構體的。可見結構體的功能並非我們平時用到的這麼簡單,沒有太多人知道結構體中也可以有自己的函式成員。

舉個例子:

#include "stdio.h"

struct demo

void func()//一般函式

};void main()

儲存為mytest1.c , vc6.0和gcc編譯都會出錯。這可能說明標準c是不支援結構體包括函式成員形式的(因為字尾.c使得vc或gcc選擇c編譯器)。 但是如果將檔案字尾改為.cpp(也就是選擇c++編譯),就不再有錯誤了,得到結果:

after init,m=33

function of struct.

也就是說,在c++中允許結構體包含函式成員,而標準c不支援。 進一步發現,c++中甚至允許結構體中含有建構函式、過載、public/private等等.這樣看來,結構體真的與類越來越靠近相似了!

c++擴充了結構體的功能。但c++中為了介紹物件導向的類,卻淡化了同樣精彩的結構體。當我們寫一些小程式而覺得沒有必要去構造類的時候,選擇結構體確實會方便很多。

推薦相關一篇博文

C結構體中的函式指標與函式

1.函式指標 一般的函式指標可以這麼定義 int func int,int 表示乙個指向含有兩個int引數並且返回值是int形式的任何乙個函式指標.假如存在這樣的乙個函式 int add2 int x,int y 那麼在實際使用指標func時可以這樣實現 func add2 指標賦值,或者func ...

C語言結構體中的函式指標

結構體是由一系列具有相同型別或不同型別的資料構成的資料集合。所以,標準c中的結構體是不允許包含成員函式的,當然c 中的結構體對此進行了擴充套件。那麼,我們在c語言的結構體中,只能 通過定義函式指標的方式,用函式指標指向相應函式,以此達到呼叫函式的目的。1.函式指標 一般的函式指標可以這麼定義 int...

C語言結構體中的函式指標

指標是c語言的重要組成部分,於是深入理解指標並且高效地使用指標可以使程式設計師寫出更加老練的程式。我們要記住指標是乙個指向記憶體位址的變數。指標可以引用如int char 常見的資料型別,例如 int intptr 宣告乙個指向整型值的指標 int intval 5 定義乙個整型變數 intptr ...