推 ychch: 宣告的字串常數所在的記憶體位址是不能被修改的~ 07/26 00:02
推 Richun: reverse的函式宣告有問題,不能用char*,會出事。 07/26 00:08
→ Richun: 這個程式反轉了一個"陣列",但是直接reverse("ABCDEFG"); 07/26 00:09
→ Richun: 你測試完就知道會發生什麼事 07/26 00:09
→ Schottky: strlen() 每呼叫一次就會計算一次陣列長度 07/26 00:17
→ Schottky: 好好一個O(N)可以解決的問題被他寫成O(N^2),效能悲劇 07/26 00:17
→ wtchen: char s[] 不算字串常數吧? 07/26 00:38
→ Caesar08: 他指的是,如果用reverse("ABCDEFG")的話 07/26 01:00
→ Caesar08: 如果用char s[]就沒事 07/26 01:00
推 shec1213: strlen()只有被call一次阿... 07/26 01:17
→ Schottky: 喔喔,strlen() 是我看錯了 XD 07/26 01:34
推 ilms49898723: 考這麼不直覺歐? 我認為是對的說 07/26 07:29
→ ilms49898723: 在code中也沒用到字串常數我們還要腦補他會用字串 07/26 07:30
→ ilms49898723: 常數去想歐? 07/26 07:31
推 Frozenmouse: 應該不會是要考 int v.s size_t 吧( ゚д゚) 07/26 07:39
→ uranusjr: 但他給的 input 也不可能會爆, 要說錯也很牽強 07/26 10:07
→ uranusjr: 如果只給 reverse 那倒是可以說出一些問題 07/26 10:07
→ uranusjr: 不然真要說的話 system("pause") 也算是錯的 07/26 10:08
→ uranusjr: 喔還有在某些標準下 int main() 也不對 07/26 10:11
→ Caesar08: 有解答嗎? 07/26 13:24
推 steve1012: 覺得有問題都能寫吧 不一定有標準答案 07/27 05:44
→ steve1012: 為啥一題只能有一種答案 07/27 05:45
→ steve1012: 寫Ali 要考量一下edge cases 算蠻正常的吧 07/27 05:45
推 EdisonX: 亂入一下,原本函式裡面用 size_t 反而問題比較大 07/28 18:21
→ EdisonX: 考慮到空字串的話就 gg 了 07/28 18:21
→ PkmX: reverse("ABCDEFG"); 是 caller 自己寫爛啊 把const拿掉了 07/29 11:28
→ PkmX: 可以改用ssize_t或ptrdiff_t 不過前者只有在posix裡面 07/29 11:31
→ PkmX: 還是改用for (char* i=p, j=p+strlen(p)-1; 這樣比較安全XD 07/29 11:32
→ remmurds: 不要再用 dev c++ 了...拜託 07/30 09:20