開發平台(Platform): (Ex: Win10, Linux, ...)
macOS
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
gcc
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
無
問題(Question):
bus error
餵入的資料(Input):
無
預期的正確結果(Expected Output):
正確strcpy
錯誤結果(Wrong Output):
bus error
程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔)
可正確完成:
程式碼a.
https://pastebin.com/dic0xAgn
我想問的錯誤程式碼:
程式碼b.
https://pastebin.com/6S1VE5nF
另外一種程式碼:
程式碼c.
https://pastebin.com/w8J8cxBv
補充說明(Supplement):
不知道是不是我觀念問題錯很大,連續兩篇有關string的位址問題XD
先說,這三個程式碼只差在第13行
a.是我後來突發奇想這樣改,結果對了:
strcopy((char *)&a, (char *)&b);
b.我一開始是這樣寫的:
strcopy(a,b);
c.是我用線上編譯器做的,b餵進去會錯,才這樣在線上編譯器改:
strcopy(&a,&b);
我一開始在本機的compiler是寫b的程式碼,
一直出現bus error,真的是搞不懂,
因為我有實作另一個strlen,就是用b的方法傳進去,
然後內部s++;count++;這樣
但在copy會錯,
後來在線上編譯器實作b的方法,也會錯,
改成c後,就可以了
但很不合理啊,c這樣傳入的應該是char **,居然會對?
後來在本機的compiler寫a的做法,
我自己覺得很奇怪,為什麼這樣可以,但b不行?
求大大們開示