【问题标题】:Using different strings in C? [duplicate]在 C 中使用不同的字符串? [复制]
【发布时间】:2014-01-31 10:03:51
【问题描述】:
char *string = "a";
string = "abc";

上面这段代码是有效的。

char string2 [2] = "a";
string2 = "abc";

第二段代码无效。为什么? string2 不是 char*string 一样吗?同一个类型怎么会有不同的属性呢?

【问题讨论】:

标签: c arrays string


【解决方案1】:

string 是指向char 的指针。 string2char 元素的数组。这两种是不同的类型。

在您的第二个示例中,您尝试将指针分配给数组(字符串文字评估为指针。)这没有意义,也不可能。真的和:

int numbers[2];
int num;
numbers = # // How's that supposed to work?

人们对此有点困惑,因为您可以在指针上使用索引运算符[],并且数组的名称计算为指向其第一个元素的指针。这并不意味着指针是数组,反之亦然。这只是一些语法糖,可以更轻松地访问指向或包含的数据。

【讨论】:

    【解决方案2】:

    第二段代码无效。为什么?

    因为数组名称是不可修改的左值。

    string2 不是 char* 就像 string 吗?

    没有。 string22 chars 的数组,而 string 是指向 char 的指针。

    同一个类型怎么会有不同的属性呢?

    请记住,指针不是数组stringstring2 属于不同类型。

    【讨论】:

    • = 运算符不会将数据从一个字符串复制到另一个字符串。这里的问题与涉及的字符数无关。如果它读取char string2 [2] = "abc"; string2 = "a";,它仍然是一个错误。
    • @dmckee;是的。你说的对。现已编辑。
    【解决方案3】:

    在您的第二个代码中,您尝试将新字符串分配给数组。

    在 C 中,数组不能直接赋值。你可以使用strcpy

    char string2 [2] = "a";
    strcpy(string2, "ab");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-24
      • 1970-01-01
      • 2013-01-20
      • 1970-01-01
      • 1970-01-01
      • 2019-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多