C語言 函式指標與指標函式

2021-10-05 15:44:13 字數 1806 閱讀 8720

寫在前面的話:

博主是乙個小菜鳥,並且非常玻璃心!如果文中有什麼問題,請友好地指出來,博主查證後會進行更正,啾咪~~

每篇文章都是博主現階段的理解,如果理解的更深入的話,博主會不定時更新文章。

typedef用於為各種資料型別定義新名字。

語法:

typedef

unsigned

char byte;

在這個型別定義之後,識別符號 byte 可作為型別 unsigned char 的縮寫,例如:byte b1, b2;

函式指標:指向函式的指標。

定義為:

資料型別 (*func)(引數列表);
例如:

void

(*func)

(int*,

int*

);

定義函式指標

定義函式

把函式的位址賦給函式指標

通過函式指標呼叫函式

例如:

// 1. 定義函式指標

int(

*pfun)

(int*,

int*);

// 2. 定義函式

intfun

(int*,

int*);

// 3. 把函式的位址賦給函式指標

pfun = fun;

// 4. 通過函式指標呼叫函式

// pfun是函式的位址,*pfun就是函式本身了

(*pfun)

(p, q)

;

先看一下例子:

#include

intadd

(int a,

int b)

typedef

int(

*function)

(int

,int);

intmain()

在例子中,定義函式指標型別function,它指向函式int (int, int)的指標,也就是說 function 表示的是這種型別的函式的位址。

需要注意的是,函式名不是其型別的一部分,函式的型別只由它的返回值和引數列表決定,指向add()的指標必須指向與add()相同型別的函式,即有相同的返回型別和相同的參數列。

int (* func)(int, int)int* func(int, int)是不同的,前者是函式指標,後者是指標函式,後者說明的是返回乙個int型別的指標。

指標函式:返回值是指標的函式

定義為:

資料型別 * func(引數列表);
例如:

char

*func

(int*,

int*

);

注意

當函式的返回值是指標型別的時候,盡量不要返回區域性變數的指標。

原因

區域性變數定義在函式的內部,當函式的呼叫結束之後,區域性變數的棧記憶體也會被釋放,並不能得到正確的返回值。實際上,指標的位址返回的時候,記憶體已經被釋放了,所以這個時候位址已經無效了,此時再使用這個指標會很危險。

《c和指標》

《高質量嵌入式linux c程式設計》

c語言函式指標與指標函式

include include include using namespace std 1 c語言函式指標 解釋 這是一種很特殊的指標,它的指向是乙個函式的入口 作用 該指標可以接受乙個函式的位址,代表這個函式執行函式的操作 函式指標舉例 下面是乙個函式指標pfunc,它只能指向返回值為float,...

C語言函式指標與指標函式

在大家剛開始學習c語言的時候,總是分不清函式指標和指標函式,就算是知道了它們之間的區別,也不了解它們的使用場景,我寫此部落格幫大家縷一縷,也幫我自己縷一縷 1 函式指標與指標函式的概念以及區別 指標函式 從名字上可以看出,首先它是乙個函式,指標指的是返回值為指標 函式指標 從名字上可以看出,首先他是...

C語言 指標與函式指標

1 void p p是乙個指標,指標p指向乙個變數,變數的資料型別待定,使用過程需要強轉。2 void p p是乙個函式,p是函式名,函式的返回值是乙個指向void 型別的指標 指向void型別就是指向型別待定 3 void p p乙個函式指標 指向函式入口位址 函式的返回值是void型別 4 vo...