[問題] 請問語法問題

看板C_and_CPP (C/C++)作者 (...)時間3年前 (2021/03/12 11:19), 3年前編輯推噓4(4012)
留言16則, 6人參與, 3年前最新討論串1/2 (看更多)
我使用Keil C編譯器, 請教一個語法問題 char *name = "stream_server"; 這樣子會讓string寫到不明位置造成危險嗎? 但我宣告為 char name[]; compiler卻又告訴我 incomplete type is not allowed 我一定要宣告為 char name[10]; 才能夠成功 0 Error. 但由於我的所帶入的字串並非都是等長, 不知道該怎樣做才好? thanks! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.125.153.170 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1615519177.A.5FF.html

03/12 11:27, 3年前 , 1F
問題出在你沒貼出來的地方
03/12 11:27, 1F

03/12 11:29, 3年前 , 2F
我隱隱覺得你有犯了置底第四誡就是了
03/12 11:29, 2F

03/12 11:35, 3年前 , 3F
char *, const char*, char str[10] 這些差異你清楚嗎?
03/12 11:35, 3F

03/12 11:36, 3年前 , 4F
你是擔心 name 指向不合法位置嗎?
03/12 11:36, 4F
是的, 擔心指向不合法位置. 我將code貼在這邊: http://pastie.org/p/3RlwdiXlanGxt0CMfcQMEU ※ 編輯: pilipalabon (59.125.153.170 臺灣), 03/12/2021 11:49:39

03/12 12:06, 3年前 , 5F
用 char *name=(char []){“stream_server”};
03/12 12:06, 5F

03/12 12:24, 3年前 , 6F
字串長度未定的情況下,我會宣告一個足夠的大的陣列,比
03/12 12:24, 6F

03/12 12:24, 3年前 , 7F
如char strbuff[255]之類的,方便對字串做操作
03/12 12:24, 7F

03/12 12:25, 3年前 , 8F
因為網頁我打不開,所以不確定實際你是怎麼寫就是了
03/12 12:25, 8F

03/12 13:14, 3年前 , 9F
你這個是結構成員, 當然必須要寫一個長度固定下來
03/12 13:14, 9F

03/12 13:15, 3年前 , 10F
char name[] = "myserver"; 這種只有區域變數才能用
03/12 13:15, 10F

03/12 13:16, 3年前 , 11F
結構成員的問題在於它不知道有誰會用, 無法提前應對
03/12 13:16, 11F

03/12 13:17, 3年前 , 12F
不像區域變數只有當下指定的值在用, 所以可以讓編譯器自動
03/12 13:17, 12F

03/12 13:17, 3年前 , 13F
求出用的這裡有多長去留空間
03/12 13:17, 13F

03/12 13:17, 3年前 , 14F
結構成員的用法多半就像我樓上說的就給一個最大長度就好
03/12 13:17, 14F

03/12 13:18, 3年前 , 15F
或是像下篇文章說的使用 const char *
03/12 13:18, 15F

03/12 13:28, 3年前 , 16F
了解....學習了! 謝謝LPH66的解釋!
03/12 13:28, 16F
文章代碼(AID): #1WIjt9N_ (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1WIjt9N_ (C_and_CPP)