[问题] 请问语法问题

楼主: pilipalabon (...)   2021-03-12 11:19:35
我使用Keil C编译器, 请教一个语法问题
char *name = "stream_server";
这样子会让string写到不明位置造成危险吗?
但我宣告为 char name[];
compiler却又告诉我 incomplete type is not allowed
我一定要宣告为 char name[10];
才能够成功 0 Error.
但由于我的所带入的字串并非都是等长, 不知道该怎样做才好?
thanks!
作者: Schottky (顺风相送)   2021-03-12 11:27:00
问题出在你没贴出来的地方我隐隐觉得你有犯了置底第四诫就是了
作者: descent (“雄辩是银,沉默是金”)   2021-03-12 11:35:00
char *, const char*, char str[10] 这些差异你清楚吗?你是担心 name 指向不合法位置吗?
作者: Dinowchang (Dinow)   2021-03-12 12:06:00
用 char *name=(char []){“stream_server”};
作者: d630200x (DOGE)   2021-03-12 12:24:00
字串长度未定的情况下,我会宣告一个足够的大的阵列,比如char strbuff[255]之类的,方便对字串做操作因为网页我打不开,所以不确定实际你是怎么写就是了
作者: LPH66 (-6.2598534e+18f)   2021-03-12 13:14:00
你这个是结构成员, 当然必须要写一个长度固定下来char name[] = "myserver"; 这种只有区域变量才能用结构成员的问题在于它不知道有谁会用, 无法提前应对不像区域变量只有当下指定的值在用, 所以可以让编译器自动求出用的这里有多长去留空间结构成员的用法多半就像我楼上说的就给一个最大长度就好或是像下篇文章说的使用 const char *
楼主: pilipalabon (...)   2021-03-12 13:28:00
了解....学习了! 谢谢LPH66的解释!
作者: Gway (我爱的你 也爱我 好吗?)   2021-03-18 01:34:00
为啥不是 知道strlen后 再malloc len+1(for '/0') ?
作者: Lipraxde (Lipraxde)   2021-03-18 07:17:00
嵌入式系统不见得有 malloc 可以用

Links booklink

Contact Us: admin [ a t ] ucptt.com