首先我使用语言c我还是初学者。
char S[20];
S ="ewer" ;
是正确的。
答案 0 :(得分:1)
不能在C中分配数组(包括字符串)。对于字符串,您需要strcpy,或者最好是strncpy:
#include <string.h>
...
char S[20];
strcpy(S, "ewer"); // strcpy is fine for this example
strncpy(S, "ewer", sizeof(S)); // strncpy is safer in general and
// should be preferred over strcpy
答案 1 :(得分:1)
不,那不会起作用。
变量S
是一个数组,你不能像C中那样分配给数组。字符串"ewer"
表示为由字符{{1}终止的字符数组}}。要将其复制到数组中,您需要使用函数:
'\0'
答案 2 :(得分:1)
这是一个很好的问题。事实上,如果你写了char* S
,那么这个例子就可以了。您可能会对这样的事实感到困惑:数组和指针有许多相似的东西 - 比如[]
运算符。
但是你必须明白数组与指针不同。主要区别之一是您无法增加数组,例如++myArr
(此代码适用于指针,但不适用于数组)。您在问题中看到的另一个:您无法重新分配数组变量以指向另一个数组。这正是您要做的事情:您正在为数组变量S
指定一个指向文本为"ewer"
的地方的指针,这将无效。
假设您想要为文本分配文本,您可以执行以下操作:
char S[] = "ewer";
这里你要说编译器在堆栈上分配尽可能多的空间,因为"ewer"
text (加上零结束字符)成立,并在那里复制那个文本。注意空括号[]
- 您甚至不需要手动计算符号,编译器会为您完成。