看板 C_and_CPP 關於我們 聯絡資訊
我使用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
Schottky: 問題出在你沒貼出來的地方 03/12 11:27
Schottky: 我隱隱覺得你有犯了置底第四誡就是了 03/12 11:29
descent: char *, const char*, char str[10] 這些差異你清楚嗎? 03/12 11:35
descent: 你是擔心 name 指向不合法位置嗎? 03/12 11:36
是的, 擔心指向不合法位置. 我將code貼在這邊: http://pastie.org/p/3RlwdiXlanGxt0CMfcQMEU ※ 編輯: pilipalabon (59.125.153.170 臺灣), 03/12/2021 11:49:39
Dinowchang: 用 char *name=(char []){“stream_server”}; 03/12 12:06
d630200x: 字串長度未定的情況下,我會宣告一個足夠的大的陣列,比 03/12 12:24
d630200x: 如char strbuff[255]之類的,方便對字串做操作 03/12 12:24
d630200x: 因為網頁我打不開,所以不確定實際你是怎麼寫就是了 03/12 12:25
LPH66: 你這個是結構成員, 當然必須要寫一個長度固定下來 03/12 13:14
LPH66: char name[] = "myserver"; 這種只有區域變數才能用 03/12 13:15
LPH66: 結構成員的問題在於它不知道有誰會用, 無法提前應對 03/12 13:16
LPH66: 不像區域變數只有當下指定的值在用, 所以可以讓編譯器自動 03/12 13:17
LPH66: 求出用的這裡有多長去留空間 03/12 13:17
LPH66: 結構成員的用法多半就像我樓上說的就給一個最大長度就好 03/12 13:17
LPH66: 或是像下篇文章說的使用 const char * 03/12 13:18
pilipalabon: 了解....學習了! 謝謝LPH66的解釋! 03/12 13:28
Gway: 為啥不是 知道strlen後 再malloc len+1(for '/0') ? 03/18 01:34
Lipraxde: 嵌入式系統不見得有 malloc 可以用 03/18 07:17