關於結構體指標問題,還有函式指標作為結構體成員的問題

時間 2021-07-08 21:30:47

1樓:雪豹出擊

int(*changevar)(int);//你少些了個e這是一個函式指標,這個changevar指標指向一個這樣的函式:這個函式有一個int型引數,返回值也是int.所以if(fb_info.

changevar) 的意思就是判斷結構體fb_info中的changevar是否為空,等同於if(fb_info.changevar==null) .

而(*fb_info.changevar)(con)就是用changevar呼叫一個con函式了,con函式也是一個只有一個int引數,返回值是int的函式,此時 結構體fb_info的函式指標changevar指向con這個函式。就和普通的變數指標指向一個變數的意思一樣的。

希望對你有幫助!

2樓:秋風掃走廊

int(*changvar)(int);

changvar表示指向函式的指標

該函式指標存放的是一個函式的首地址

假如該函式指標為空表示沒有對應的函式

如果賦值了的話,那麼就可以呼叫

(*fb_info.changevar)(con); 就是呼叫該函式

3樓:匿名使用者

int(*changvar)(int); //這是個函式指標,可以指向有一個int引數並且返回int的函式

if(fb_info.changevar) //這個意思是if(fb_info.changevar!=0)

(*fb_info.changevar)(con); //以con為引數,執行changver指向的函式

4樓:

if (fb_info.changevar),等價於if (fb_info.changevar != null)

(*fb_info.changevar)(con)的意思是呼叫這個函式

這個結構是用c實現的物件封裝,如果你學過c++就很容易理解了這些函式指標相當於這個物件的一些方法函式

5樓:自由翱翔海闊天空

fb_info.changevar是函式指標,在判斷中是用來判斷這個指標是否已經被指定了函式;如果沒有初始化,則不確定指標的內容,使用時會報錯;如果指定為0,則表明不指向任何函式;所以這裡的判斷是等價於if (fb_info.changevar !

= null),只能判定有沒有指向0;

(*fb_info.changevar)(con)是呼叫函式,等價於 fb_info.changevar(con);

結構體指標的問題,結構體指標和結構體中的指標的區別

楚劒蘭心 是呼叫操作符,是對指標的解引用然後再呼叫,只有指標呼叫別的變數或函式時使用,並且只要是用指標來呼叫的話,就必用它。比如 struct s int value s p 定義一個結構體指標 p value 呼叫結構體內的變數。也就是 p value 二者等價。 公珍碧魯哲 struct l 粗...

c語言結構指標和結構體成員指標問題

佼霏聞新竹 既是取地址符號,一個指標p指向q就需要寫作p q,在函式引數裡是 引用 就是別名,類似指標了,這種情況下對變數的修改會影響到函式外的原變數。那個printf a p n a 等於求出地址 x然後作為指標看待 p 所以也是yyyy了 樓主可以做個試驗,看看輸出結果地址間的關係,你就應該可以...

c語言中陣列指標和結構體指標問題

樓上都說的很不錯。針對補充,我說兩句 結構體名字不是指標,結構體陣列的名字才是指標 就好像int x x不是指標,int x 2 x是常量指標 同樣 struct aa aa x x不是指標,aa x 3 x是常量指標 對於陣列int a 2 我們通常把a看成是指標 但實際上,這個指標並不存在的,a...