字符数组初始化

时间:2011-08-31 11:00:03

标签: c string

我目前正在玩C并尝试理解字符串。有人可以解释为什么这有效:

char test[] = "test";

以下为什么没有?

char test[255];
test = "test";

6 个答案:

答案 0 :(得分:8)

因为这是初始化

char test[] = "test";

这是作业

test = "test";

并且您无法在C中分配数组(C中的字符串只是数组)。

您最好的选择是使用strcpy()复制字符串(或者是安全的,strncpy())。

答案 1 :(得分:5)

C不允许您为整个数组赋值,除非它已初始化。

将字符串复制到现有数组的正确方法是strcpy

char test[255];
strcpy(test,"test");

答案 2 :(得分:0)

即使你说的看起来很明显,也是不正确的。你不能直接将字符串分配给字符数组。你可以尝试使用strcpy()函数。

答案 3 :(得分:0)

因为“test”是指针而test是数组。你总是可以使用strcpy()。

答案 4 :(得分:0)

不幸的是,C不支持字符串的直接赋值(因为它涉及多于1个内存地址)。你必须使用strcpy或memcpy函数。

好 是的

 test[0]='t' works (since your accessing one memory location at the time)

答案 5 :(得分:0)

您无法直接分配数组,因为它是不可修改的左值。但您可以使用间接分配,例如:

typedef struct { char s[100]; } String;

int main()
{
  char a[100] = "before";
  assert( sizeof a >= sizeof(String) );
  puts( a );
  *(String*)a = *(String*) "after";
  puts( a );
  return 0;
}