在 C 中声明字符串的更好方法是什么?

Which is the better way to declare string in C?

我是 C 语言的新手,我很好奇在 c 中声明字符串的最佳方式。

示例:

char *name;
//or char name[];

scanf("%s", &name);
printf("Hello %s !", name);

在这种情况下,这两者哪个更好?

char *name;
char name[];

如果你有一个固定长度的字符串。您可以像这样声明一个 char 数组。

char name[64];


scanf("%s", name); // no more than 63 characters, remember the '[=10=]'
printf("Hello %s\n", name);

如果字符串长度是动态的,请使用函数malloc分配特定长度的内存。更重要的是,你应该记得释放之前分配的内存。

char *name; 是一个指针,它指向字符串第一个索引的地址。如果您通过引用操作变量,这主要用于例如(通过引用传递参数)

char name[] 在 C 中不适用,因为您必须初始化数组大小,例如char name[20];

无论哪种方式,语法正确的后者更好。