当我尝试声明一个字符数组然后(单独)初始化它时,我有两个错误。 (如字符串1所示) 但是当我在一行中声明并初始化字符数组时(如 string2 所示),问题就消失了。
(我是编程新手) 谢谢你。
第一个错误:不允许不完整的类型 第二个错误:需要一个表达式
C 有一个语法用于在声明期间指定初始值。该语法不能用于赋值。
当你想将字符串对数组的赋值与数组的声明分开时,你实际上有两个问题:
某些语言允许您动态地将字符串分配给名称。为此,它们必须自动为您管理内存。 C 不这样做。它很大程度上是一种 DIY 语言,为您提供了对操作的大量控制权,但代价是要求您完成必要的工作。
在
char string2[] = "Hello!";
中,编译器计算 "Hello!"
中的字符数,包括终止空字符,并为数组 string2
分配那么多空间。当您写 char string1[];
时,有关所需内存的信息不存在。
您必须通过指定数组的大小来自行提供信息,如
char string1[7];
中所示。
然后,要将字符串复制到数组中,可以使用
strcpy
:
strcpy(string1, "Hello!");