寫在前面的話:博主是乙個小菜鳥,並且非常玻璃心!如果文中有什麼問題,請友好地指出來,博主查證後會進行更正,啾咪~~
每篇文章都是博主現階段的理解,如果理解的更深入的話,博主會不定時更新文章。
typedef
用於為各種資料型別定義新名字。
語法:
在這個型別定義之後,識別符號 byte 可作為型別 unsigned char 的縮寫,例如:typedef
unsigned
char byte;
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...