C語言中函式指標的簡單使用

2021-07-30 20:58:22 字數 1842 閱讀 8126

一、函式指標的引入

二、函式指標的簡單運用

一、函式指標的引入

在c語言當中,指標的使用非常重要的。我們都知道有變數指標,可以通過這個變數指標來訪問這個變數;那麼有沒有函式指標呢,如果有的話能不能通過這個函式指標來訪問這個函式呢?答案是肯定的。在說什麼是函式指標之前,先引入乙個簡單的例子,如下所示:

#include /* 列印hello,world! */

void print_hello(void)

/* 程式的入口函式 */

int main(int argc, char *argv)

編譯並執行,結果如下:

上面這段**當中void (*fun_ptr)(void); 這個語句的定義是比較奇怪的,但是通過分析發現當對裡面的fun_ptr 賦值為 print_hello這個函式名,然後再fun_ptr()就會列印出來hello'world!,和直接呼叫print_hello()的結果是一樣的。其實void (*fun_ptr)(void);,就是定義乙個函式指標變數,而print_hello這個函式名本身就可以表示這個函式的所在的位址,所以將其賦值給fun_ptr,在呼叫fun_ptr()就可以列印出hello.world!了。函式指標變數的定義形式如下:

返回值 (*函式指標變數民)(形參列表)
從上面分析可以看出,要想將乙個函式的位址賦值給乙個函式指標變數必須保證它的返回值、形參列表和要賦值的函式保持一致。

二、函式指標的簡單運用

函式指標的作用在c語言當中是十分巨大的,可以說稍微有一點規模的程式都會涉及到函式指標。本文就結合兩個小例子來簡單說一說函式指標的使用。

1、第乙個小例子

#include /* 列印hello,world! */

void print_hello(void)

void print_goodbye(void)

/* 程式的入口函式 */

int main(int argc, char *argv)

fun_ptr(); /* 輸出選擇的列印 */

return 0;

}

執行結果如下:

分析**可知,根據使用者輸入決定給函式指標賦予相應的函式位址,從而決定呼叫相應的函式。可以想象在專案開發過程當中,可能同一型別的函式有多個,此時呼叫那個需要根據具體的情況來做出選擇,這時候就發揮出了函式指標的作用。

2、第二個小例子

定義乙個學生的結構體,要求在結構體內部定義乙個函式指標,通過呼叫這個函式指標來列印出學生的資訊。具體**如下:

#include /* 定義乙個標識學生資訊的結構體 */

struct student ;

/* 定義乙個列印學生資訊的函式 */

void show_student_info(struct student *obj)

/* 程式的入口函式 */

int main(int argc, char *argv)

編譯並執行,結果如下:

像上面這樣的寫法是很常見的,也是c語言做專案開發中基本都會用到的形式,有點兒物件導向程式設計的意思。

關於函式指標的用法在c語言當中是非常重要的,而且使用的形式是多種多樣的,作用也是不盡相同的,本文只是簡單的說一說而已。不足掛齒,呵呵。

C語言中簡單的指標

指標是c語言的重要特徵,理解指標的關鍵點是要弄清楚資料型別這個概念。指標也是一種變數,它所表示的不是資料值,而是儲存著資料的記憶體位址。通過使用指標,可以對任意指定位址的資料進行讀寫。假設計算機上使用的程式32位 4位元組 的記憶體位址。這種情況下,指標變數的長度也是32位。下面,我們定義三種資料型...

C語言中的函式指標

開啟去年6月的乙個test.cpp檔案,發現對裡面測試的函式指標幾乎沒有印象了。溫故而知新,於是重新找到ansi c 裡面的說明 除了宣告指向整型數字 雙精度型數字和c語言其他資料型別的指標外,指標也能夠被宣告指向乙個函式 包含乙個函式的位址 指向函式的指標是可能的,因為函式名像陣列名一樣,它們本身...

C語言中的函式指標

1.函式指標的定義 顧名思義,函式指標就是函式的指標。它是乙個指標,指向乙個函式。2.函式指標的使用 我們定義了乙個函式指標,但如何來使用它呢?先看如下例 include include char fun char p1,char p2 int i 0 i strcmp p1,p2 if 0 i r...