位置:首頁 > 軟件操作教程 > 編程開發(fā) > C語言 > 問題詳情

返回指針值在C語言的函數(shù)

提問人:楊紫紅發(fā)布時間:2020-11-17
一個函數(shù)可以帶回一個整型值、字符值、實型值等,也可以帶回指針型的數(shù)據(jù),即地址。其概念與以前類似,只是帶回的值的類型是指針類型而已。
格式: 類型名   *函數(shù)名(參數(shù)表);
例: int   *a(int  x,  int  y);
     a是函數(shù)名,調(diào)用它以后能得到一個指向整型數(shù)據(jù)的指針(地址)。
關(guān)于函數(shù)的返回值是指針的情況,程序設(shè)計時應(yīng)注意:

1、因數(shù)組名是地址常量,用于接受這種返值的對象不能是數(shù)組名,這與把數(shù)組名作為實在參數(shù)傳遞給形式參數(shù)的情況不同(作為形式參數(shù)的數(shù)組名總被視為指針)。

2、不應(yīng)將局部于被調(diào)用函數(shù)的指針作為返值返回給調(diào)用者,理由是局部于被調(diào)用函數(shù)的數(shù)據(jù)對象執(zhí)行返回語句離開被調(diào)用函數(shù)后,原來分配的被調(diào)用函數(shù)的所有局部對象的存儲空間立即被收回(釋放),雖然調(diào)用者已經(jīng)獲得了正確的地址值,但此時它指向的存儲區(qū)域的內(nèi)容可能已經(jīng)發(fā)生了變化,或許已經(jīng)分配給其他函數(shù)了。如果調(diào)用函數(shù)中仍然使用這個指針去存取那個區(qū)域中的數(shù)據(jù),得到的可能并非原先的數(shù)據(jù)。對于這種情況的正確做法是應(yīng)該把所處理的對象定義成全局對象或static型對象。

繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部