字符数组初始化
我现在正在玩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; }