返回指針值在C語(yǔ)言的函數(shù)
格式: 類型名 *函數(shù)名(參數(shù)表);
例: int *a(int x, int y);
a是函數(shù)名,調(diào)用它以后能得到一個(gè)指向整型數(shù)據(jù)的指針(地址)。
關(guān)于函數(shù)的返回值是指針的情況,程序設(shè)計(jì)時(shí)應(yīng)注意:
1、因數(shù)組名是地址常量,用于接受這種返值的對(duì)象不能是數(shù)組名,這與把數(shù)組名作為實(shí)在參數(shù)傳遞給形式參數(shù)的情況不同(作為形式參數(shù)的數(shù)組名總被視為指針)。
2、不應(yīng)將局部于被調(diào)用函數(shù)的指針作為返值返回給調(diào)用者,理由是局部于被調(diào)用函數(shù)的數(shù)據(jù)對(duì)象執(zhí)行返回語(yǔ)句離開(kāi)被調(diào)用函數(shù)后,原來(lái)分配的被調(diào)用函數(shù)的所有局部對(duì)象的存儲(chǔ)空間立即被收回(釋放),雖然調(diào)用者已經(jīng)獲得了正確的地址值,但此時(shí)它指向的存儲(chǔ)區(qū)域的內(nèi)容可能已經(jīng)發(fā)生了變化,或許已經(jīng)分配給其他函數(shù)了。如果調(diào)用函數(shù)中仍然使用這個(gè)指針去存取那個(gè)區(qū)域中的數(shù)據(jù),得到的可能并非原先的數(shù)據(jù)。對(duì)于這種情況的正確做法是應(yīng)該把所處理的對(duì)象定義成全局對(duì)象或static型對(duì)象。
點(diǎn)擊加載更多評(píng)論>>