[問題] 一題面試遇到的問題

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

Links booklink

Contact Us: admin [ a t ] ucptt.com