返回指標的函式

2021-06-28 05:20:06 字數 1790 閱讀 8215

返回指標的函式

每個函式可返回乙個值,返回值可以是char、int、float、double等型別,當將返回值型別設定為void時,表示函式沒有返回值。在c語言中,還允許乙個函式的返回值是乙個指標(即位址),這種返回指標的函式稱為指標型函式。

定義指標型函式的形式如下:

[cpp]view plain

copy

型別說明符 *函式名(形參表)    

其中函式名之前加了"*"號表明這是乙個指標型函式,即返回值是乙個指標。型別說明符表示了返回的指標值所指向的資料型別。一般用這種函式返回乙個字串常量的首位址。

編寫乙個函式,用於將阿拉伯數字表示的月份轉換為對應的英文名稱。函式一次只能返回乙個值,若要返回乙個字串(由多個字元組成),用前面已介紹的方法可通過函式的形參返回多個字(包括乙個字串)。例如,用以下的函式頭:

void cmonth(int month, char s) 

要呼叫以上形式的函式,首先要定義乙個陣列,再將陣列作為實參傳給函式,最後將函式處理的結果用另乙個語句輸出。使用類似下面的程式:

char s[20];  

cmonth(5, s]);  

printf("月份:%2d--

>

英文名稱:%s\n",5,s); 

如果函式能返回字串,則可以使用以下方式呼叫函式,並輸出返回值:

printf("月份:%2d--

>

英文名稱:%s\n",i,cmonth(i)); 

編寫指標型函式可返回字串的首位址,下面的程式演示指標型函式的編寫方法。

【程式9-27】

[cpp]view plain

copy

#include //標頭檔案  

#include 

char

*cmonth(

intmonth);

//函式宣告  

intmain()    

char

*cmonth(

intmonth)

//自定義函式  

;    

char

*p;    

if(month>=1 && month<=12)       

//判斷是否合法  

p=str_month[month];    

else

p=str_month[0];    

return

p;    

}   

執行這段程式,按照提示輸入月份數字,得到如下結果,如圖所示。

在該程式中,定義了函式cmonth(),該函式需要乙個整型變數作為實參,返回乙個字元型指標。在函式體內部定義指標陣列,陣列中的每個指標指向乙個字串常量。然後,判斷實參month是否合法,若不合法則將第乙個元素賦值給字元指標變數p,這樣,指標變數p中的值就與指標陣列中第乙個元素中的值相同,即指向字串常量"illegal month",如圖9-54所示。當函式引數month為1~12之間的乙個值時,即可使字元指標指向對應的字串常量(變數p中保值的值是乙個位址)。

main()函式中,在printf()函式輸出列表中包括cmonth()函式的返回值(其返回值是乙個字串的首位址),printf()函式的格式字元"%s"從該首位址開始輸出字串。

圖9-53  執行結果

圖9-54  用指標操作字串

返回指標的函式

5.cpp created on 2011 8 13 author san include float search float pointer 4 int n int main void float p int i int m printf enter the number of student ...

返回指標的函式

對於最近遇到的一些函式返回指標問題歸類總結,希望對各位讀者也能有所作用。首先從乙個選擇題開始 int main char fun void 3.static char str i love you 4.static char str 5.char str i love you 6.static ch...

指向函式的指標 返回指標的函式

1.函式指標表示指向某一函式的指標,如下所示,int add int,int int pf int,int pf add 注意,因為函式add有兩個引數,所以pf指標也必須有兩個引數 且函式add的兩個引數均為int型,所以pf的兩個引數也必須與之匹配。如下例,include stdio.h inc...