字符数组初始化

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

char test[] = "test"; 

以下为什么没有?

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

因为这是初始化

 char test[] = "test"; 

这是一项任务

 test = "test"; 

并且你不能在C中分配数组(C中的字符串只是数组)。

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

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

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

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

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

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

不幸的是,C不支持直接赋值字符串(因为它调用了超过1个内存地址)。 您必须使用strcpy或memcpy函数。

好吧是啊

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

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

 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; }