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...