Re: [問題] 請問語法問題

作者: descent (「雄辯是銀,沉默是金」)   2021-03-12 13:17:22
※ 引述《pilipalabon (...)》之銘言:
: 我使用Keil C編譯器, 請教一個語法問題
: char *name = "stream_server";
: 這樣子會讓string寫到不明位置造成危險嗎?
用 const char *name 會比較好一點。
這樣的寫法, 編譯器是這樣安排的。
假設 stream_server 被編譯器安排到 0x100 的位址
0x100 0x101 0x102
s t s ....
然後 name 這個指標的值就會是 0x100
只要編譯器安排的位址沒有錯誤, 就不會有問題。
一般 stream_server 會被安排在 read only 的記憶體區域,
所以宣告會用 const char*
所以和字串的長短完全沒有關係。
char name[] 就不是這樣安排了。
: 但我宣告為 char name[];
: compiler卻又告訴我 incomplete type is not allowed
: 我一定要宣告為 char name[10];
: 才能夠成功 0 Error.
: 但由於我的所帶入的字串並非都是等長, 不知道該怎樣做才好?
: thanks!
作者: pilipalabon (...)   2021-03-12 13:22:00
了解,所以這種狀況要宣告成 const才安全! thanks

Links booklink

Contact Us: admin [ a t ] ucptt.com