我对下面的事情感到有点惊讶。
示例1:
char s[100] = "abcd"; // declare and initialize - WORKS
示例2:
char s[100]; // declare
s = "hello"; // initalize - DOESN'T WORK ('lvalue required' error)
我想知道为什么第二种方法不起作用。这似乎很自然(它适用于其他数据类型)?有人可以向我解释一下这背后的逻辑吗?
初始化数组时,C 允许您用值填充它。所以
char s[100] = "abcd";
基本上是一样的
int s[3] = { 1, 2, 3 };
但它不允许你做作业,因为s
是一个数组而不是一个自由指针。的含义
s = "abcd"
就是给指针赋值abcd
to s
但你无法改变s
从那时起,没有任何东西会指向该数组。
这可以并且确实有效,如果s
is a char*
- 一个可以指向任何东西的指针。
如果你想复制字符串简单使用strcpy https://www.tutorialspoint.com/c_standard_library/c_function_strcpy.htm.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)