c語(yǔ)言函數(shù)怎么返回?cái)?shù)組 c語(yǔ)言中調(diào)用函數(shù)的返回值,如果是數(shù)組,主函數(shù)要輸出這個(gè)數(shù)組怎么實(shí)現(xiàn)???
c語(yǔ)言中調(diào)用函數(shù)的返回值,如果是數(shù)組,主函數(shù)要輸出這個(gè)數(shù)組怎么實(shí)現(xiàn)?。客ǔS珊瘮?shù)的參數(shù)傳遞。如果要傳遞函數(shù)返回值,可以使用指針。此外,退出函數(shù)時(shí),保存數(shù)據(jù)的變量不能消失。例如:#include<s
c語(yǔ)言中調(diào)用函數(shù)的返回值,如果是數(shù)組,主函數(shù)要輸出這個(gè)數(shù)組怎么實(shí)現(xiàn)?。?/h2>
通常由函數(shù)的參數(shù)傳遞。如果要傳遞函數(shù)返回值,可以使用指針。此外,退出函數(shù)時(shí),保存數(shù)據(jù)的變量不能消失。例如:#include<stdio。H>int*fun(INTN){initaticinta[100]//這里,使用staticfor(I=0I<ni)a[I]=Ireturn&[0]}void main(){inti,n=5int*P//聲明指針P=fun(n)//返回(I=0I<ni)Printf(%d',P[I])//將P作為數(shù)組輸出}并獲取01234
c語(yǔ)言數(shù)組名后面那個(gè)中括號(hào)[]里可不可以是表達(dá)式?為什么?
,但請(qǐng)注意表達(dá)式必須是正整數(shù)或零,其他表達(dá)式都是錯(cuò)誤的。我舉一個(gè)例子,比如在一個(gè)數(shù)字字符串char a[100]int b[10]={0}//中查找數(shù)字的頻率int i=0get(a)//輸入一個(gè)數(shù)字,否則可能會(huì)有錯(cuò)誤,因?yàn)閎的下標(biāo)超過(guò)9while(a[i])b[a[i]-“0”//這里,a和b的下標(biāo)是表達(dá)式,a的下標(biāo)是I,是正整數(shù)或零,B的下標(biāo)是a[I]]-“0”是a[I]中數(shù)字的ASCII碼值減去0的ASCII碼值,即0~9
~]//從語(yǔ)法編碼規(guī)則的角度來(lái)看,ansic語(yǔ)言標(biāo)準(zhǔn)明確規(guī)定數(shù)組類(lèi)型和函數(shù)類(lèi)型不能作為返回值。解決這個(gè)問(wèn)題的方法是通過(guò)指針間接返回值,即使用數(shù)組指針和函數(shù)指針。這可能是在C語(yǔ)言中引入指針的另一個(gè)原因。結(jié)構(gòu)類(lèi)型可以用作返回值。我猜當(dāng)時(shí)C語(yǔ)言的設(shè)計(jì)者引入了struct結(jié)構(gòu)的概念,是為了添加一種機(jī)制來(lái)創(chuàng)建一種新型的C語(yǔ)言。換句話說(shuō),它希望struct創(chuàng)建的類(lèi)型與內(nèi)置int float類(lèi)型一樣易于使用。//從匯編的角度來(lái)看,有兩種返回值方法。第一種方法是直接返回寄存器。第二種方法是類(lèi)似于返回值的結(jié)構(gòu)來(lái)建立一個(gè)臨時(shí)存儲(chǔ)區(qū)。例如int的返回值類(lèi)型和指針的返回值類(lèi)型都直接返回到IA32平臺(tái)上的eax寄存器中,無(wú)論是VC還是GCC,例如IA32平臺(tái)上的float,type的浮點(diǎn)返回值類(lèi)型通常借助FPU浮點(diǎn)運(yùn)算單元中的寄存器存儲(chǔ)在堆棧中。第三種類(lèi)型是struct structure的返回值,需要建立臨時(shí)對(duì)象。對(duì)于C語(yǔ)言來(lái)說(shuō),引入一個(gè)臨時(shí)的內(nèi)部區(qū)域并不是一個(gè)大問(wèn)題,但對(duì)于C語(yǔ)言來(lái)說(shuō),這有時(shí)是致命的。我希望我能幫助你。房東英俊,浪漫,一定是世界上的英雄。誠(chéng)邀您加入0x30貼吧,共商義舉,共建不朽功業(yè)
c語(yǔ)言中函數(shù)返回值可以是數(shù)組、字符串和結(jié)構(gòu)體嗎?
1. 函數(shù)不能返回?cái)?shù)組,只能返回變量或地址。如果要直接返回二維數(shù)組,這是不可能的??梢允褂靡韵路椒ㄊ紫葮?gòu)建結(jié)構(gòu)。結(jié)構(gòu)數(shù)組{inta[3][3]}數(shù)組solve(){array return a}這樣就可以得到二維數(shù)組。2當(dāng)數(shù)組用作函數(shù)返回值或函數(shù)參數(shù)時(shí),它實(shí)際上只作為指針?lè)祷鼗騻鬟f。所以返回值是指針數(shù)據(jù)類(lèi)型。例如,下面的代碼:int Gua[4]={1,2,3,4}int*retnuuuarray()//返回值是指針類(lèi)型。{返回gua}