作者spiderman007 (千里之外)
看板C_and_CPP
標題[問題] 請問c可以用函數回傳一個陣列嗎???
時間Tue Nov 8 23:21:18 2011
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) dev-c
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 在main()裡.. int arr[3] = function();
function()可回傳一個陣列值嗎???
還是直接設成全堿變數呢??
剛剛看到java 可以寫成 int arr[] = fuction();
可是我c卻試不出來???
餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) 補充說明(Supplement): --
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.46.147.153
推 LPH66:因為 java 的陣列和 C 的陣列不一樣... 11/08 23:23
→ poyenc:C? C++? 11/08 23:42
→ x000032001:java的array不是也被視為物件嗎 應該跟C有差異吧 11/08 23:44
推 yayarice:簡單的說就是不行啊 11/08 23:49
→ asadman1523:回傳指標? 11/08 23:57
→ x000032001:要用指標處理 java視為物件 所以可以這樣玩copy 11/09 00:01
→ x000032001:C就毫無反應是個陣列 沒=賦值這種事 應該是這樣吧? 11/09 00:02
→ tomnelson:包在struct裡,傳回struct.或再用typedef struct成一個新 11/09 00:05
→ tomnelson:的type,傳回該type. 11/09 00:06
→ legnaleurc:Java 的所有變數都是 reference, 約同於 smart pointer 11/09 02:32
→ angleevil:不可以回傳指標喔.比較好的方法是tomnelson講的 11/09 17:26
→ diabloevagto:請問為什麼不能在別的function new出來再回傳指標? 11/09 17:35
→ james732:new的當然可以,有問題的是回傳區域陣列的指標 11/09 17:36
→ diabloevagto:了解!我以為a大說的是new的那種,誤會了。 11/09 17:40
→ angleevil:我講清楚點,不論是回傳local array和dynamic array 11/09 17:52
→ angleevil:c++不會阻止你喔,但是前者問題是得到一個消失的垃圾 11/09 17:53
→ angleevil:後者得到一個要記得free掉的array.但是一般人會建議你 11/09 17:54
→ diabloevagto:這個我了解,跟scope有關系 11/09 17:55
→ angleevil:把它放在參數那邊就好.ex: strcpy(char* Des,char* Src) 11/09 17:55
→ angleevil:不過glib和mysql的api,有些會回傳dynamic array.所以 11/09 17:58
→ angleevil:記得free掉,變成一門很需要的細節.但是真的很麻煩就是 11/09 17:59
推 james732:樓上好強 11/09 18:00
推 xatier:樓上上好強 11/09 20:33
→ angleevil:xatier和james732最強.幾乎都是你們在回答問題 11/09 21:00
→ diabloevagto:怎麼可以把t大忽略呢 11/09 21:03
→ tomnelson:嗯~謝謝樓上~ 11/09 22:51
→ diabloevagto:囧! 11/09 22:55
→ xatier:等等...這個討論串我沒有回答到吧 Orz 11/10 00:18
→ firejox:其實那是隱藏版的推文XDD 11/10 00:19