程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> c語言-關於函數指針的問題,求解!

c語言-關於函數指針的問題,求解!

編輯:編程解疑
關於函數指針的問題,求解!

代碼內容圖片說明
根據上圖代碼可以看到兩行輸出語句內容不同,一個沒加取值運算符,一個加了取值運算符!
編譯結果圖片說明
上圖可以看出輸出結果是一樣的,
根據測試,不加星號與加星號與加N個星號不但不報錯而切執行結果都是一樣的。
然而普通指針一旦星號加多了就報錯,編譯不出結果,
請問這是函數指針的特性嗎?
請前輩給一個詳細真實且合理的回答!

最佳回答:


  1. 其實,fun的函數名與_t.function函數指針都是一樣的,即都是函數指針。fun函數名是一個函數指針常量,而_t.function是一個函數數指針變量,這是它們的關系。
  2. 但函數名調用如果都得如(*fun)();這樣,那書寫與讀起來都是不方便和不習慣的。所以C語言的設計者們才會設計成又可允許fun();這種形式地調用(這樣方便多了並與數學中的函數形式一樣,不是嗎?)。
  3. 為統一起見,_t.function函數指針變量也可以_t.function()的形式來調用。
  4. 賦值時,即可_t.function=&fun形式,也可_t.function=fun

函數指針調用函數是不需要解引用, 但不是不可以解引用
對於函數指針而言,解引用操作,還是這個變量的值。。。依然是個地址
所以可以加很多個*進行解引用(***_t.function)();也是OK的

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved