-1
int main()
{ 
     char s[]="stack";
     s="overflow";
}

这是不允许的。它给出了一个错误。但下面的代码工作正常。

int main()
{
      char s[]="stack";
      strcpy(s,"overflow");
}

为什么会发生这种情况?

4

1 回答 1

-1

该变量s表示指向字符串的指针。更具体地说,它指的是字符串中第一个字母的内存地址"stack"。由于这个原因,操作s="overflow"没有意义。如何将 s(指针)的值设置为字符串?

请记住,C 是一种非常低级的语言,因此您必须警惕那些对您来说似乎很直观的事情,而不是按照您期望的方式行事。

于 2013-08-23T18:47:23.917 回答