指標函式與函式指標 兩個簡單例子進行說明

2021-08-19 04:27:37 字數 1013 閱讀 4855

一直都對兩個概念有所混淆--指標函式與函式指標,下面我們通過兩個例子來講解一下

開始1、指標函式

(1) 基本概念

指標函式:顧名思義就是帶有指標的函式,即其本質是乙個函式,只不過這種函式返回的是乙個對應型別的位址。

(2) 定義式

type  *func (type , type)

如:int  *max(int x, int y)

(3) 例子詳解

[cpp]view plain

copy

#include 

using

namespace

std;  

int*getnum(

intx); 

//指標函式宣告形式

void

main(

void

)    

int*getnum(

intx) ;  

return

&num[x];  

//返回乙個位址

}   總結:從上面的小例子我們可以看出子函式返回的是陣列中某一元素所在的位址值,輸出的是這一位址中儲存的數。

2、函式指標

(1) 基本概念

函式指標:指向函式的指標變數,本質上是乙個指標變數

(2) 定義式

type (*func)(type , type )

如:int  (*max)(int  a, int  b)

(3) 例子詳解

[cpp]view plain

copy

#include 

using

namespace

std;  

intmax(

inta, 

intb)   

void

main(

void

)    

總結:兩者主要區別,乙個是函式(指標函式),乙個是指標變數(函式指標)。

兩個學習指標的例子

下面的結果是多少?int a 5 int example1 int b int example2 int b void main 輸出結果 a1 15 b1 5152 由於a是全域性變數,存放在全域性變數的記憶體區,它一直是存在的 而區域性變數則是存在於函式的棧區,當函式example2 呼叫結束後...

C兩個小例子(陣列與指標)

所謂的大端模式,是指資料的高位,儲存在記憶體的低位址中,而資料的低位,儲存在記憶體的高位址中,這樣的儲存模式有點兒類似於把資料當作字串順序處理 位址由小向大增加,而資料從高位往低位放 例子 0000430 e684 6c4e 0100 1800 53ef 0100 0100 0000 0000440...

函式的輸入變數為兩個指標時要注意兩個指標是否相等

下面時交換兩個數的函式 void swap int a,int b 當傳入的a和b的位址不是同乙個位址的情況下,函式正常工作 int a 1 int b 2 swap a,b 得到a 2,b 1當傳入的a和b的位址是同乙個位址的情況下,函式不正常工作 int a 1 swap a,a 得到a 0為什...