将字符串赋值给字符数组我对以下情况感到有点惊讶。例1:char s[100] = "abcd"; // declare and initialize - WORKS例2:char s[100]; // declares = "hello"; // initalize - DOESN'T WORK ('lvalue required' error)我想知道为什么第二种方法行不通。这似乎是很自然的,它应该(它与其他数据类型一起工作)?有人能解释一下背后的逻辑吗?
3 回答
qq_遁去的一_1
TA贡献1725条经验 获得超7个赞
初始化数组时,C允许用值填充数组。所以
char s[100] = "abcd";
基本上和
int s[3] = { 1, 2, 3 };
但是它不允许你做这个任务,因为s
是数组而不是空闲指针。意义
s = "abcd"
的指针值。abcd
到s
但你不能改变s
从那时起,任何东西都不会指向数组。
如果s
是char*
-可以指向任何东西的指针。
如果要复制字符串,请简单使用strcpy
.
FFIVE
TA贡献1797条经验 获得超6个赞
char
\0
const char x[] = {'h','e','l','l','o','\0'};
char s[100];strncpy(s, "hello", 100);
#define STRMAX 100char s[STRMAX];size_t len;len = strncpy(s, "hello", STRMAX);
Qyouu
TA贡献1786条经验 获得超11个赞
1 char s[100];2 s = "hello";
- 3 回答
- 0 关注
- 2120 浏览
添加回答
举报
0/150
提交
取消