在C中使用不同的字符串?

时间:2014-01-12 17:48:13

标签: c arrays string

char *string = "a";
string = "abc";

以上代码有效。

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

第二段代码无效。为什么? string2 char*不是string吗?同一类型如何具有不同的属性?

3 个答案:

答案 0 :(得分:2)

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

在你的第二个例子中,你试图指定一个指向数组的指针(字符串文字计算为指针。)这没有任何意义,也是不可能的。它真的没有什么不同:

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

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

答案 1 :(得分:0)

  

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

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

  

string2不是char* string吗?

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

  

同一类型如何具有不同的属性?

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

答案 2 :(得分:0)

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

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

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