This question already has answers here:
Assigning strings to arrays of characters
(9个答案)
6年前关闭。
这是不允许的,它给出了一个错误,但是下面的代码可以正常工作。
为什么会这样?
(9个答案)
6年前关闭。
int main()
{
char s[]="stack";
s="overflow";
}
这是不允许的,它给出了一个错误,但是下面的代码可以正常工作。
int main()
{
char s[]="stack";
strcpy(s,"overflow");
}
为什么会这样?
最佳答案
变量s
表示指向字符串的指针。更具体地说,它指的是字符串"stack"
中第一个字母的内存地址。由于这个原因,操作s="overflow"
没有意义。如何将s(指针)的值设置为字符串?
请记住,C是一种非常底层的语言,因此您必须警惕那些看起来似乎很直观的事情,并且它们的行为方式与您期望的不一样。
关于c - 字符数组分配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18409736/