指標與函式的關係

2021-04-01 15:20:54 字數 1063 閱讀 5988

c語言中的指標變數可以指向乙個函式;函式指標可以作為引數傳遞給其它函式;函式的返回值可以是乙個指標值。

1.指向函式的指標

函式雖然不是變數,但是它在記憶體中占有實際位置。函式的首位址就是該函式的入口位址,它可以賦給指標變數,使得指標變數指向函式。利用指向函式的指標變數,可以代替函式名,也可以作為函式的引數傳遞給其它函式。

函式指標可以用如下形式說明:《型別》 (*指標變數名)();

例如:int (*funcp)();

表示funcp被定義為指向乙個返回值是整型量的函式。

若函式指標被說明為:float (*funcp)();

則說明了funcp是乙個指向乙個返回值是浮點數的函式。

以上說明中,第一對圓括號是必須要的,如果去掉,如int (*funcp)(),就變成了int *funcp();

按照運算子的優先順序,編譯程式把這個說明解釋為:funcp是乙個返回值為指向整型量指標的函式。

這就與前面的解釋完全不同了。

2.把指向函式的指標變數作為函式引數

函式的指標變數作為引數傳遞到其它函式中,是函式指標的重要用途之一,其基本思想是:設有一函式func(p1, p2);有兩個形參p1和p2,它們被說明為指向函式的指標變數。則在呼叫func()函式時,實在引數用f1和f2兩個函式名給形式引數p1和p2傳遞函式位址,這樣在函式func()中就可以呼叫函式f1和f2。如

f1() f2

} main()

func(p1, p2)

int (*p1)(), (*p2)();

其中i和j是函式f1和f2所要求的引數。(*p1)(i)就等價於f1(i),(*p2)(i, j)等價於f2(i, j)。利用這一基本思想,實現了同一段程式呼叫不同的函式進行操作。

3.返回值為指標的函式

函式返回值可以是乙個指標。在函式定義時要指明,同樣在呼叫前也要對其進行說明。定義這種函式如同定義指標一樣,都是通過「*」來表示。一般說明形式為:

《型別符》 *《函式名》 (《形引數》)

(形引數說明部分)

需要注意的是,呼叫返回值是指標的函式之前,先要對其進行說明。

指標與陣列,指標與函式之間的關係

指標陣列,它的關鍵在於是乙個陣列,即陣列中每個元素都是指標。陣列指標,他的關鍵在於是指標變數,即這個指標指向乙個陣列。include int main 這是乙個陣列,大家都知道。int parr1 4 這是指標陣列,首先的優先順序比 的優先順序高,所以parr 先與結合,它是乙個陣列,然後再與 結合...

指標與位址 函式引數的關係

1.基本概念 指標是儲存變數位址的變數。指標存在的兩個目的 1 指標是表達某個計算的唯一途徑 2 使用指標可以生成更高效 更緊湊的 通常情況,機器的乙個位元組可以存放乙個char型別資料,兩個相鄰的位元組儲存單元可儲存乙個short 短整型 型別的資料,而四個相鄰的位元組儲存單元可以儲存乙個long...

指標與陣列及函式關係

1.對於c 的九種內建基本型別來說。在程式中出現該名稱,即表示指向該型別的乙個變數 或常量等 通常我們對於變數作為右值,即去變數位址空間的值。但對於陣列名和函式名則不同 因為陣列的值和函式值很難或無法表示 如 int arr 2 c 規定陣列名代表指向首元素的位址,即陣列名作為右值,取的是第乙個元素...