[问题] 一题面试遇到的问题

楼主: 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