函數(shù)怎么返回結(jié)構(gòu)體數(shù)組 c語(yǔ)言中函數(shù)返回值可以是數(shù)組、字符串和結(jié)構(gòu)體嗎?
c語(yǔ)言中函數(shù)返回值可以是數(shù)組、字符串和結(jié)構(gòu)體嗎?//從語(yǔ)法編碼規(guī)則的角度看,ansic語(yǔ)言標(biāo)準(zhǔn)明確規(guī)定數(shù)組類(lèi)型和函數(shù)類(lèi)型不能作為返回值。解決這個(gè)問(wèn)題的方法是通過(guò)指針間接返回值,即使用數(shù)組指針和函數(shù)指針
c語(yǔ)言中函數(shù)返回值可以是數(shù)組、字符串和結(jié)構(gòu)體嗎?
//從語(yǔ)法編碼規(guī)則的角度看,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è)
我現(xiàn)在沒(méi)學(xué)完C語(yǔ)言,但是學(xué)校已經(jīng)開(kāi)了數(shù)據(jù)結(jié)構(gòu)課程,感覺(jué)像聽(tīng)天書(shū)一樣,如何更好地理解數(shù)據(jù)結(jié)構(gòu)?
首先,我認(rèn)為作為一名大學(xué)生,自學(xué)能力很強(qiáng)。對(duì)于C語(yǔ)言沒(méi)有學(xué)完的,可以花時(shí)間認(rèn)真學(xué)習(xí)。不,你可以去圖書(shū)館查資料,或者上網(wǎng),或者自學(xué)。現(xiàn)在網(wǎng)絡(luò)平臺(tái)有很多優(yōu)質(zhì)資源,你可以試試。第二,數(shù)據(jù)結(jié)構(gòu)的算法是抽象的,必須認(rèn)真研究。它是編程的基礎(chǔ),與C語(yǔ)言沒(méi)有必然的聯(lián)系。我們可以用C語(yǔ)言實(shí)現(xiàn)一些算法。它也可以用其他語(yǔ)言實(shí)現(xiàn)。
第三,對(duì)自己有信心。沒(méi)有問(wèn)題可以與老師和同學(xué)交流。既然我們選了一個(gè)好專(zhuān)業(yè),就應(yīng)該深入學(xué)習(xí)。
這是我的一些看法,希望對(duì)您有所幫助!