在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é)果返回。如出錯(cuò),返回空指針NULL。 代碼可以寫成如下形式:int *int_array_create(int n)//...
C語(yǔ)言返回值不支持返回?cái)?shù)組,不過(guò)可以通過(guò)返回指針類型,用以替代數(shù)組。在C語(yǔ)言中,數(shù)組大多數(shù)時(shí)候是可以用指針替代的。不過(guò)需要注意的是,不能夠返回在函數(shù)內(nèi)部定義的局部變量數(shù)組,因?yàn)橐坏┖瘮?shù)退出,局部變量就會(huì)被釋放,導(dǎo)致數(shù)組指針無(wú)效。可以返回以下幾種:1 全局變量,或者全局變量空間內(nèi)的一個(gè)地址。2...
1、ANSI C語(yǔ)言標(biāo)準(zhǔn),明確規(guī)定 數(shù)組類型和函數(shù)類型不可以做為返回值。解決這種返回值的方法是通過(guò)指針來(lái)間接返回,即使用數(shù)組指針和函數(shù)指針。這可以做為c語(yǔ)言引入指針的另一個(gè)理由。2、字符串是數(shù)組的一種,是字符數(shù)組,所以同樣不可以作為返回值。3、結(jié)構(gòu)體類型可以做為返回值,C語(yǔ)言設(shè)計(jì)者當(dāng)時(shí)引入str...
數(shù)組在作為函數(shù)返回值或者函數(shù)參數(shù)時(shí),實(shí)際上只作為指針來(lái)返回或者傳遞的。因此返回值用指針數(shù)據(jù)類型。比如下面的代碼:int g_a[4] = {1,2,3,4};int * retn_arrary() //返回值用指針類型即要。{return g_a; }
C語(yǔ)音沒(méi)有直接返回一個(gè)數(shù)組的說(shuō)法,要得到一個(gè)數(shù)組的返回值,一般做法有幾點(diǎn):傳入一個(gè)指向數(shù)組指針變量,在函數(shù)內(nèi)部對(duì)指針地址內(nèi)的值進(jìn)行修改 函數(shù)內(nèi)部申請(qǐng)動(dòng)態(tài)內(nèi)存,將數(shù)據(jù)保存到這塊內(nèi)存后返回該動(dòng)態(tài)內(nèi)存的指針,最后需要手動(dòng)釋放這塊內(nèi)存 使用靜態(tài)變量(這個(gè)方法不建議使用,靜態(tài)、全局變量很容易導(dǎo)致多線程...
不能直接返回一個(gè)數(shù)組,但是可以用其他方式實(shí)現(xiàn)類似功能。方法1:利用全局變量 分析:全局變量作為C語(yǔ)言的一個(gè)知識(shí)點(diǎn),雖然我們都了解它的特點(diǎn),但在實(shí)際教學(xué)過(guò)程中應(yīng)用得并不是很多。由于全局變量的作用域是從定義變量開(kāi)始直到程序結(jié)束,而對(duì)于編寫有多個(gè)返回值的C語(yǔ)言函數(shù),我們可以考慮把要返回的多個(gè)值...
1,把數(shù)組定義成全局變量,全局變量是在程序運(yùn)行結(jié)束后才被釋放的,可以返回 2,用malloc函數(shù)手動(dòng)分配數(shù)組的地址,這樣數(shù)組就被保存在堆中,在函數(shù)結(jié)束時(shí)不會(huì)被系統(tǒng)回收,在程序結(jié)束的時(shí)候也不會(huì)被系統(tǒng)回收,所以在程序結(jié)束的時(shí)候一定要注意對(duì)這塊內(nèi)存的回收釋放,避免內(nèi)存泄露。3,把函數(shù)的形參寫成指針...
C++中 數(shù)組和枚舉都是不可以作為函數(shù)的返回類型來(lái)返回的,假如您想要實(shí)現(xiàn)返回?cái)?shù)組,您可以聲明一個(gè)結(jié)構(gòu),里面包含數(shù)組或者枚舉類型,然后返貨這個(gè)結(jié)構(gòu)類型或者指針 曾經(jīng)有本很經(jīng)典的書就笑談到(貌似是《C++primer puls》):C和C++不允許返回?cái)?shù)組卻可以返貨帶數(shù)組的結(jié)構(gòu)體,這不是自己打自己巴掌么......
返回?cái)?shù)組是不行的(用malloc分配倒是可以但不安全),但你的要求卻可以達(dá)到,那就是用指針 比如,輸入a,返回b和c:void fun(int a,int pb,int pc){ pb = a - 1;pc = a + 1;} int main(){ int a = 1;int b,c;fun(a,&b,&c);//輸入a返回b=a-1,c=a+1兩個(gè)結(jié)果 printf(...
返回?cái)?shù)組是不行的(用malloc分配倒是可以但不安全),但你的要求卻可以達(dá)到,那就是用指針 比如,輸入a,返回b和c:void fun(int a, int *pb, int *pc){ pb = a - 1;pc = a + 1;} int main(){ int a = 1;int b, c;fun(a, &b, &c);//輸入a返回b=a-1,c=a+1兩個(gè)...