C語言 返回指標的函式 指標函式

2021-10-04 18:42:18 字數 2096 閱讀 2297

人之所以痛苦,那是因為你在成長。--------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個章節學習指標,應該都感受到指標的強大了吧。指標可以根據位址直接操作記憶體中的資料,...