返回指標的函式
每個函式可返回乙個值,返回值可以是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...