【发布时间】:2021-02-02 07:04:47
【问题描述】:
我是 C 语言的新手,我很好奇在 c 中声明字符串的最佳方式。
例子:
char *name;
//or char name[];
scanf("%s", &name);
printf("Hello %s !", name);
在这种情况下,这两个哪个更好?
char *name;
char name[];
【问题讨论】:
-
这真的取决于你的用例,你用字符串做什么。
-
另请注意,最后一个使用
[]是无效的,因为您没有提供尺寸。数组必须有大小,除非在一种特殊情况下 (flexible array member)。 -
哦,记住,虽然文字字符串不是常量,但它们不能被修改(并且实际上是只读的),这就是为什么如果你想要一个指针,建议使用
const char *到文字字符串。 -
如果您有
char *name;,那么scanf("%s", &name)是错误的,原因有两个:1)%s说明符需要char *类型的参数,而@987654330 @ 是char **类型; 2) 一旦 1 固定,则指针name未初始化,并且将是空指针(如果定义为全局变量),或者具有不确定(和随机/垃圾)值。
标签: arrays c string variables char