[問題] char* 的問題

看板C_and_CPP作者 (鋼彈)時間14年前 (2011/09/07 21:36), 編輯推噓14(14027)
留言41則, 14人參與, 最新討論串1/2 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) vc++ 問題(Question): char*傳入function的問題 餵入的資料(Input): char* 程式碼(Code):(請善用置底文網頁, 記得排版) char* func(char* buffer) { printf( "%x" , buffer); ←問題在這行 char result[40]; return result; } 補充說明(Supplement): 程式裡只要用到buffer就會出現語法錯誤 錯誤在下面那行 錯誤訊息就是在type前必須有 " ; " 請問一下這是什麼問題??? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.169.229.132

09/07 21:43, , 1F
你確定 你知道 你正在 做什麼事嗎 ?
09/07 21:43, 1F

09/07 21:45, , 2F
我猜你的副檔名是 .c
09/07 21:45, 2F

09/07 21:52, , 3F
return result 也是找死
09/07 21:52, 3F

09/07 21:59, , 4F
某公司某段code也這樣return 可是跑起來都沒事XDD
09/07 21:59, 4F

09/07 22:00, , 5F
我想知道是哪間公司,我會怕怕的..
09/07 22:00, 5F

09/07 22:01, , 6F
想改還被念說編譯沒error就好 別亂改XD
09/07 22:01, 6F

09/07 22:12, , 7F
地雷只要不去踩它, 都應該不會爆.
09/07 22:12, 7F

09/07 22:12, , 8F
問題是這種地雷何時會被別人踩爆你也不知道阿XD
09/07 22:12, 8F

09/07 22:13, , 9F
也許那家公司那段code是不會被呼叫的, 或者return回去的
09/07 22:13, 9F

09/07 22:13, , 10F
東西根本不會去用. 但那只是自我安慰的找了兩個理由.
09/07 22:13, 10F

09/07 22:14, , 11F
說不定根本是惡意的防copy地雷。
09/07 22:14, 11F

09/07 22:16, , 12F
數位浮水印
09/07 22:16, 12F

09/07 22:36, , 13F
那何不直接用 void 來防...
09/07 22:36, 13F

09/08 00:09, , 14F
編譯可以通過 但是結果是錯的吧
09/08 00:09, 14F

09/08 00:09, , 15F
如果硬要的話就是要&result 但是還是不對就是..
09/08 00:09, 15F

09/08 00:10, , 16F
並不是樓上的問題 型態是對的沒錯但東西不一定在那裡
09/08 00:10, 16F

09/08 00:10, , 17F
這是置底十三誡之五
09/08 00:10, 17F

09/08 00:10, , 18F
那是local stack呀~
09/08 00:10, 18F

09/08 00:11, , 19F
2F L大是猜因為是C, 所以變數宣告都要放在{}的前面嗎XD
09/08 00:11, 19F

09/08 00:11, , 20F
PS. {}裡的最前面
09/08 00:11, 20F

09/08 00:14, , 21F
'應該是那個記憶體位置已經不是存那些了吧
09/08 00:14, 21F

09/08 00:15, , 22F
的確如此 而且我記得是會出現這個錯誤訊息沒錯
09/08 00:15, 22F

09/08 00:15, , 23F
你要不要看一下其他的有沒有漏...
09/08 00:15, 23F

09/08 00:55, , 24F
放 local 你傳垃圾出來 = =a
09/08 00:55, 24F

09/08 03:27, , 25F
我也不懂為什麼不寫void, return垃圾還不如不return..
09/08 03:27, 25F

09/08 09:47, , 26F
結果從3F後的話題,都是return local address ~"~
09/08 09:47, 26F

09/08 10:16, , 27F
說不定它餵進來char*就是一個bad address
09/08 10:16, 27F

09/08 11:26, , 28F
既然func只是把char *當成整數去用16進位列印,那不牽涉到
09/08 11:26, 28F

09/08 11:27, , 29F
對 buffer 取值,那餵進來的是不是 bad 也可以睜眼閉眼
09/08 11:27, 29F

09/08 11:33, , 30F
不寫void是因為 有人說一定要傳個char* 出來 =.=|||
09/08 11:33, 30F

09/08 11:36, , 31F
可以return null or 字串常數.不要return會消失的東西
09/08 11:36, 31F

09/08 11:51, , 32F
還有個問題,副檔名是.C沒有錯,為什麼變數都要放最前面?
09/08 11:51, 32F

09/08 12:00, , 33F
~"~這問題好怪喔.
09/08 12:00, 33F

09/08 12:01, , 34F
其實我的程式中有寫 malloc啦,這邊懶得寫 =.=
09/08 12:01, 34F

09/08 12:02, , 35F
結果照成這麼大的反應 真是不好意思
09/08 12:02, 35F

09/08 12:03, , 36F
因為最主要的問題是前面那裡。謝謝大家的回應啊!感激!
09/08 12:03, 36F

09/08 12:51, , 37F
...前面那裡到底有什麼問題,你code也沒給清楚.
09/08 12:51, 37F

09/08 13:05, , 38F
怕變數不放最前面的時候,變數宣告前,就有人來個 goto
09/08 13:05, 38F

09/08 13:06, , 39F
LPH66 有說問題點,在於 result 宣告沒在 printf 之前.
09/08 13:06, 39F

09/08 13:06, , 40F
結果 malloc 就被 goto 跳過就 return 了。
09/08 13:06, 40F

09/08 14:57, , 41F
結論就是2F說的 謝謝!
09/08 14:57, 41F
文章代碼(AID): #1EPtDQLN (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1EPtDQLN (C_and_CPP)