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