結構體是由一系列具有相同型別或不同型別的資料構成的資料集合。所以,標準c中的結構體是不允許包含成員函式的,當然c++中的結構體對此進行了擴充套件。那麼,我們在c語言的結構體中,只能通過定義函式指標的方式,用函式指標指向相應函式,以此達到呼叫函式的目的。
函式指標
函式型別 (*指標變數名)(形參列表);第乙個括號一定不能少。
「函式型別」說明函式的返回型別,由於「()」的優先順序高於「*」,所以指標變數名外的括號必不可少。
注意指標函式與函式指標表示方法的不同,千萬不要混淆。最簡單的辨別方式就是看函式名前面的指標*號有沒有被括www.cppcns.com號()包含,如果被包含就是函式指標,反之則是指標函式。
要宣告乙個函式指標,使用下面的語法:
return type ( * function pointer's variable name ) ( parameters )
例如宣告乙個名為func的函式指標,接收兩個整型引數並且返回乙個整型值
int (*func)(int a , int b ) ;
可以方便的使用型別定義運用www.cppcns.com於函式指標:
typedef int (*func)(int a , int b ) ;
結構體中的函式指標
我們首先定義乙個名為operation的函式指標:
typedef int (*operation)(int a , int b );
再定義乙個簡單的名為str的結構體
typedef struct _str str;
現在來定義兩個函式:add和multi:
//a和b相加
int add (int a, int b)
//a和b相乘
int multi (int a, int b)
現在我們可以寫main函式,並且將函式指標指向正確的函式:
int main (int argc , char **ar**)
執行結果如下:
the result is 8
the result is 15
完整的**如下:
#include
typedef int (*operation)(int a, int b);
typedef struct _str str;
//a和b相加
int add (int a, int b)
//a和b相乘
int multi (int a, int b)
int main (int argc , char **ar**)
本文標題: 詳解c語言結構體中的函式指標
本文位址: /ruanjian/c/147846.html
結構體指標,C語言結構體指標詳解
結構體指標,可細分為指向結構體變數的指標和指向結構體陣列的指標。前面我們通過 結構體變數名.成員名 的方式引用結構體變數中的成員,除了這種方法之外還可以使用指標。前面講過,student1 表示結構體變數 student1 的首位址,即 student1 第乙個項的位址。如果定義乙個指標變數 p 指...
C語言結構體中的函式指標
結構體是由一系列具有相同型別或不同型別的資料構成的資料集合。所以,標準c中的結構體是不允許包含成員函式的,當然c 中的結構體對此進行了擴充套件。那麼,我們在c語言的結構體中,只能 通過定義函式指標的方式,用函式指標指向相應函式,以此達到呼叫函式的目的。1.函式指標 一般的函式指標可以這麼定義 int...
C語言結構體中的函式指標
指標是c語言的重要組成部分,於是深入理解指標並且高效地使用指標可以使程式設計師寫出更加老練的程式。我們要記住指標是乙個指向記憶體位址的變數。指標可以引用如int char 常見的資料型別,例如 int intptr 宣告乙個指向整型值的指標 int intval 5 定義乙個整型變數 intptr ...