人之所以痛苦,那是因為你在成長。--------magic_guo
函式可以返回整形、字串、實型值、無返回值、也可以返回指標型別的資料,即返回乙個記憶體位址,像這樣返回位址的函式成為指標函式。其概念與普通的函式一樣,只不過返回值的型別為指標型別。
定義返回指標值的函式的一般形式為:
型別名 * 函式名(引數列表).
例如:int * a(int x, int y)
根據運算子的先後等級,a先於括號結合,表示乙個函式,前面的 int * 表示此函式返回乙個指向整形的指標
例題1:
使用指標函式來實現:有a個學生,每個學生的b門課程的成績,輸入序號,求該學生的所有成績:
# include
intmain
(void),
,};//定義乙個二維陣列
float
*search
(float
(*pointer)[4
],int n)
;//對於search函式的前置宣告宣告
float
* p;
int i, k;
printf
("enter the number of student:");
scanf
("%d"
,&k)
;printf
("the scores of no.%d are:\n"
, k)
; p =
search
(score, k)
;//呼叫search函式,實參為score,k。
程式解釋:
我們定義了search函式,該函式返回乙個指向浮點型的指標;pointer是乙個指向含有四個浮點型元素的一維陣列,將score二維陣列當做實參,search函式中,那麼一開始pointer指向的是score二維陣列中第0行的一維陣列。再加上n,則pointer指向的是score[0+n]的那一行陣列。則 * (pointer+n)則是指向了score中第n行的一維陣列的首元素的位址。然後將首位址賦值給pt,由search函式返回。
在主函式main中,通過便利一維陣列,將每個成績列印出來。
例題2:
根據上題,這次不用輸入序號,直接返回不及格的同學的成績及學號。
程式解釋:
定義乙個search函式,該函式返回乙個指向浮點型的指標,pointer是乙個指向含有4個浮點型一維陣列的指標。在search函式中,先將pt初始化為null,接下來遍歷所有學生的成績,如果有不及格的成績,將此同學的學號記下來,即pt= * pointer;然後將pt返回到主函式,將此同學的學號和成績都列印出來。
學習此方法,使我們會對指標和函式有乙個更深的理解,靈活使用指標和函式。
c語言 返回指標的函式
1 返回本地變數的位址是危險的,一旦離開這個函式本地變數就不存在了 實驗 int f void 產生這種結果的原因 本地變數在函式結束後,雖然值還存在記憶體中,但是不再受保護會,被之後的變數覆蓋掉。2 返回全域性變數或靜態本地變數的位址是安全的 3 返回在函式內malloc的記憶體是安全的,但是容易...
C語言 返回指標的函式與指向函式的指標
指標也是c語言中的一種資料型別,因此乙個函式的返回值肯定可以是指標型別的。返回指標的函式的一般形式為 型別名 函式名 引數列表 比如下面這個函式,返回乙個指向char型別變數的指標 1 將字串str中的小寫字母變成大寫字母,並返回改變後的字串2 注意的是 這裡的引數要傳字串變數,不能傳字串常量 3c...
C語言 返回指標的函式與指向函式的指標
本文目錄 說明 這個c語言專題,是學習ios開發的前奏。也為了讓有物件導向語言開發經驗的程式設計師,能夠快速上手c語言。如果你還沒有程式設計經驗,或者對c語言 ios開發不感興趣,請忽略 回到頂部 前面我們花了接近3個章節學習指標,應該都感受到指標的強大了吧。指標可以根據位址直接操作記憶體中的資料,...