单独声明和初始化字符数组的问题 - C 语言

问题描述 投票:0回答:1

当我尝试声明一个字符数组然后(单独)初始化它时,我有两个错误。 (如字符串1所示) enter image description here 但是当我在一行中声明并初始化字符数组时(如 string2 所示),问题就消失了。

(我是编程新手) 谢谢你。

第一个错误:不允许不完整的类型 第二个错误:需要一个表达式

arrays c string character
1个回答
0
投票

C 有一个语法用于在声明期间指定初始值。该语法不能用于赋值。

当你想将字符串对数组的赋值与数组的声明分开时,你实际上有两个问题:

  • 对于分配,您必须使用不同的方法,如下所述。
  • 从声明中删除初始化也会删除用于确定数组大小的方法,因此您必须手动给出大小。

某些语言允许您动态地将字符串分配给名称。为此,它们必须自动为您管理内存。 C 不这样做。它很大程度上是一种 DIY 语言,为您提供了对操作的大量控制权,但代价是要求您完成必要的工作。

char string2[] = "Hello!";
中,编译器计算
"Hello!"
中的字符数,包括终止空字符,并为数组
string2
分配那么多空间。当您写
char string1[];
时,有关所需内存的信息不存在。

您必须通过指定数组的大小来自行提供信息,如

char string1[7];
中所示。

然后,要将字符串复制到数组中,可以使用

strcpy
:

strcpy(string1, "Hello!");
© www.soinside.com 2019 - 2024. All rights reserved.