Re: [語法] 請問回傳值形態不同,函數如何宣告

看板C_and_CPP作者 (藍影)時間15年前 (2010/05/10 17:21), 編輯推噓1(102)
留言3則, 3人參與, 最新討論串2/6 (看更多)
我寫個 sample code, 不知是否是您想要的 (我知道用 Template 應該是可以寫得更好..) 也歡迎各位先進指正 // ========================== // 2010.6.11. // sample code. #include <stdio.h> #include <stdlib.h> #include <string.h> #define LEN 200 // ========================== void* func(bool string_int) { if(string_int){ int *ptr = (int*)malloc(sizeof(int)); *ptr = 255; return (void*)(ptr); } else{ char *String = (char*)malloc(sizeof(char)*LEN); strcpy(String, "goodbye my love"); return (void*)(String); } } // ========================== int main(int argc, char **argv) { printf("%s\n", (char*)func(false)); printf("%d\n", *((int*)func(true))); return 0; } // ============================= 請問這種方式是您可以接受的嗎?? 不過我想這的確很麻煩唷.. ※ 引述《a77d4e06 (喵~>"<||)》之銘言: : 如題, : 請問我同一個函數要回傳一個字串或是一個數值, : 那該函數要設甚麼形態呢?? : 新手發問,感謝回答 : ※ 編輯: a77d4e06 來自: 140.112.4.191 (05/10 21:05) : 推 VictorTom:應該不行吧?? 不能一開始就分成兩個函數去call嗎?? 05/10 21:09 : → VictorTom:一個變則的方式是, 回傳一個struct, 裡面包含字串與數字 05/10 21:10 : → VictorTom:的型態, 讓caller端檢查固定某個欄位來分辨應該拿字串還 05/10 21:11 : → VictorTom:是拿數字的資料; 其實理論上calling time就要能區分會回 05/10 21:11 : → adrianshum:如果是 "或", 可以順便學學 union 05/10 21:11 : → VictorTom:來的是字串還是數字, 不然caller端你也根本沒辦法收@_@" 05/10 21:12 : 推 maplefog:struct裡再多設一個變數 0時讀數字 1讀字串 應該可以 05/10 21:13 : → VictorTom:有道理, 順便學著用 union 一起上....:D 05/10 21:13 : → a77d4e06:小弟我想回傳的是一個getAccout函數,如果餘額是正的 05/10 21:16 : → a77d4e06:那就回傳餘額,如果是負的就回傳餘額不足字串 05/10 21:16 : 推 VictorTom:通常這種事在caller收到負值時再印餘額不足字串就行吧@@ 05/10 21:18 : → freesamael:那應該是回傳負數由client處理,或直接throw exception 05/10 21:19 : → VictorTom:另一個方法, 餘額正值的也回成字串, 這樣就都是字串了XD 05/10 21:19 : → a77d4e06:那請問INT形態怎麼換成STRING@@? 05/10 21:20 : → maplefog:if(value<0) cout<<餘額不足;else cout<< value; 05/10 21:24 : → dendrobium:是不是應該重新考慮一下你的設計...@@a 05/10 21:28 : → yayarice:這樣設計你要用甚麼變數去存那個回傳值? 05/10 21:31 : → x000032001:要讓函數單純化阿 搞的很複雜@@ 05/10 21:44 : 推 lvlightvivi:void* 回傳之後再CAST? 不過都要用指標 05/10 21:53 : → loveme00835:弄一個父類別然後再用RTTI來做好像也可以 XD 05/10 22:22 : 推 loveflames:用template? 05/10 23:06 : 推 cloudlim:好奇template +1 @@" 這種情況不能用template嗎? 05/10 23:47 : → loveme00835:原po是想要"同一個函式"喔, 用模版並不是同一個函式 05/11 00:32 : → loveme00835:模板寫下去就讓呼叫的方式不同了~ XD 05/11 00:33 -- 我期待 我等待 肩狹骨上的翅膀早些長出來 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 120.126.194.160

05/11 02:20, , 1F
2010.6.11 !?
05/11 02:20, 1F

05/11 02:46, , 2F
= = key 錯, 是5/11
05/11 02:46, 2F

05/11 14:29, , 3F
感謝這位大大,沒想到要這麼的複雜
05/11 14:29, 3F
文章代碼(AID): #1Bw4247r (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1Bw4247r (C_and_CPP)