第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么C ++不支持函數(shù)返回數(shù)組?

為什么C ++不支持函數(shù)返回數(shù)組?

某些語言使您可以像正常函數(shù)一樣聲明一個函數(shù),該函數(shù)返回一個數(shù)組,例如Java:public String[] funcarray() {   String[] test = new String[]{"hi", "hello"};   return test;}為什么C ++不支持類似的東西int[] funcarray(){}?您可以返回一個數(shù)組,但是創(chuàng)建這樣的函數(shù)確實很麻煩。而且,我在某處聽說字符串只是char的數(shù)組。因此,如果可以用C ++返回字符串,為什么不使用數(shù)組呢?
查看完整描述

3 回答

?
一只名叫tom的貓

TA貢獻1906條經(jīng)驗 獲得超3個贊

C中的數(shù)組(以及C ++中的向后兼容性)具有與其余類型不同的特殊語義。特別是,對于其余類型,C僅具有按值傳遞語義,對于數(shù)組,按值傳遞語法的效果以一種奇怪的方式模擬了按引用傳遞:

在函數(shù)簽名中,類型為T的N個元素的類型數(shù)組的參數(shù)轉(zhuǎn)換為指向T的指針。在函數(shù)調(diào)用中,將數(shù)組作為參數(shù)傳遞給函數(shù)將使數(shù)組衰減指向第一個元素指針,并且該指針將被復制到函數(shù)中。

由于對數(shù)組進行了特殊處理-它們不能按值傳遞-因此也不能按值返回它們。在C中,您可以返回一個指針,在C ++中,您也可以返回一個引用,但是數(shù)組本身不能在堆棧中分配。

如果考慮到這一點,這與您在問題中使用的語言沒有什么不同,因為該數(shù)組是動態(tài)分配的,并且您僅返回指向它的指針/引用。

另一方面,C ++語言為該特定問題提供了不同的解決方案,例如std::vector在當前標準中使用(內(nèi)容是動態(tài)分配的)或std::array在即將到來的標準中使用(內(nèi)容可以在堆棧中分配的,但是這樣做可能會增加成本) ,因為在編譯器無法刪除副本的情況下,必須復制每個元素)。實際上,您可以通過使用現(xiàn)有的庫(如)與當前標準使用相同類型的方法boost::array。


查看完整回答
反對 回復 2019-10-09
  • 3 回答
  • 0 關(guān)注
  • 781 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號