在C語(yǔ)言中,無(wú)法直接返回一個(gè)數(shù)組,但是可以通過(guò)返回對(duì)應(yīng)類型指針的方式,返回?cái)?shù)組。在大多數(shù)情況下,一維數(shù)組和一維指針是可以通用的。比如,定義一個(gè)函數(shù),申請(qǐng)一定長(zhǎng)度的整型動(dòng)態(tài)數(shù)組,其長(zhǎng)度用參數(shù)傳入,并將結(jié)果返回。
我們提供的服務(wù)有:成都做網(wǎng)站、成都網(wǎng)站制作、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、鎮(zhèn)康ssl等。為上千企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的鎮(zhèn)康網(wǎng)站制作公司
函數(shù)返回值一般為一個(gè)值,現(xiàn)在你要返回?cái)?shù)組,那么你可以在程序中定義全局?jǐn)?shù)組,或者你通過(guò)傳指針的方式傳過(guò)來(lái)數(shù)組參數(shù),在函數(shù)中更改了數(shù)組的值后又把數(shù)組首地址返回去就可以用了。
首先,C/C++只能返回?cái)?shù)組的指針而不能返回整個(gè)數(shù)組。即使返回?cái)?shù)組的指針,但如果函數(shù)中的數(shù)組是自動(dòng)性質(zhì),那將是危險(xiǎn)的。這是比較正宗的表述。如果確實(shí)需要從函數(shù)中返回自動(dòng)性質(zhì)的數(shù)組的全部元素值,有沒(méi)有辦法呢?有。
方法2:傳遞數(shù)組指針 分析:在教學(xué)過(guò)程中,我們知道C語(yǔ)言函數(shù)參數(shù)的傳遞方式有值傳遞與地址傳遞。當(dāng)進(jìn)行值傳遞時(shí),主調(diào)函數(shù)把實(shí)參的值復(fù)制給形參,形參獲得從主調(diào)函數(shù)傳遞過(guò)來(lái)的值運(yùn)行函數(shù)。
我們首先定義一個(gè)二級(jí)指針和一個(gè)行列變量[int ** array,row,column;]。然后我們編寫進(jìn)入行和列的語(yǔ)句,代碼如圖所示。接下來(lái)我們可以用一維數(shù)組打開(kāi)一維一維數(shù)組。
數(shù)組在作為函數(shù)返回值或者函數(shù)參數(shù)時(shí),實(shí)際上只作為指針來(lái)返回或者傳遞的。因此返回值用指針數(shù)據(jù)類型。比如下面的代碼:int g_a[4] = {1,2,3,4};int * retn_arrary() //返回值用指針類型即要。
我們首先定義一個(gè)二級(jí)指針和一個(gè)行列變量[int ** array,row,column;]。然后我們編寫進(jìn)入行和列的語(yǔ)句,代碼如圖所示。接下來(lái)我們可以用一維數(shù)組打開(kāi)一維一維數(shù)組。
c語(yǔ)言沒(méi)有直接讀取返回?cái)?shù)組的函數(shù)。看你問(wèn)題里文件內(nèi)容格式是:一行一個(gè)字符串回車換行。那么,用fgets一次讀一行,你寫循環(huán)調(diào)用這個(gè)fgets函數(shù)把讀取的值放在數(shù)組里。
你想返回一個(gè)數(shù)組,因?yàn)槟阍谝粋€(gè)函數(shù)內(nèi)創(chuàng)建了數(shù)組,屬于局部變量,所以他在stack部分,而stack部分是用后類似于銷毀的,你返回的地址類似于一塊垃圾的地址,所以編譯警告。
方法2:傳遞數(shù)組指針 分析:在教學(xué)過(guò)程中,我們知道C語(yǔ)言函數(shù)參數(shù)的傳遞方式有值傳遞與地址傳遞。當(dāng)進(jìn)行值傳遞時(shí),主調(diào)函數(shù)把實(shí)參的值復(fù)制給形參,形參獲得從主調(diào)函數(shù)傳遞過(guò)來(lái)的值運(yùn)行函數(shù)。
在C語(yǔ)言中,有時(shí)我們需要函數(shù)的返回值為一個(gè)二維數(shù)組。這樣外部函數(shù)接收到這個(gè)返回值之后,可以把接收到的二維數(shù)組當(dāng)成矩陣操作(外部函數(shù)不可用普通的一級(jí)指針接收返回值,這樣的話,外部函數(shù)將不知道它具有二維性)。
具備C/C++基礎(chǔ)后,進(jìn)一步學(xué)習(xí)二維數(shù)組、多維數(shù)組在工程項(xiàng)目中的應(yīng)用。根據(jù)地圖的海拔數(shù)據(jù),來(lái)識(shí)別地形上的各個(gè)峰點(diǎn)(最高點(diǎn))和谷點(diǎn)(最低點(diǎn)),以確定地形中峰點(diǎn)的數(shù)目和位置,為探測(cè)器提供導(dǎo)航數(shù)據(jù)。
比如,定義一個(gè)函數(shù),申請(qǐng)一定長(zhǎng)度的整型動(dòng)態(tài)數(shù)組,其長(zhǎng)度用參數(shù)傳入,并將結(jié)果返回。如出錯(cuò),返回空指針NULL。
由于全局變量的作用域是從定義變量開(kāi)始直到程序結(jié)束,而對(duì)于編寫有多個(gè)返回值的C語(yǔ)言函數(shù),我們可以考慮把要返回的多個(gè)值定義成全局變量。當(dāng)函數(shù)被調(diào)用時(shí),全局變量被更改,我們?cè)侔迅暮蟮娜肿兞恐祽?yīng)用于主調(diào)函數(shù)中。
在C/C++中,一般有兩種方法來(lái)返回一個(gè)數(shù)組。