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

2021-06-22 22:30:12 字數 1081 閱讀 1802

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語言結構體中的函式指標與函式

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

函式指標與結構體

在c 中,物件導向是通過虛函式來實現的,僅有虛函式,當然只是乙個物件導向的皮毛,因為實際上真正的物件導向概念訊息和訊息響應。先撇開目前市面上物件導向中關於封裝變化,依賴倒轉等一些概念性和理論性的東西。我們在這邊,僅考慮c 中虛函式在c中的模擬實現,以便於更好的理解虛函式。假定我們現在有乙個函式的原形...

結構體中的函式指標

結構體中指向函式的指標 c語言中的struct是最接近類的概念,但是在c語言的struct中只有成員,不能有函式,但是可以有指向函式的指標,這也就方便了我們使用函式了。舉個例子,如下 include include include typedefstruct student stu void ini...