【发布时间】:2017-11-10 23:03:52
【问题描述】:
我是 C 的初学者,所以请多多包涵;
我知道我可以将数组语句设为*c 或c[];
我的问题是关于 memset:
char str[] = "hello!";
memset (str,'-',2);
puts (str);
工作正常。 但是:
char *str = "hello!";
memset (str,'-',2);
puts (str);
不工作,
我知道 char *str = ... 是一个普通的数组语句。
如果有人能帮我解决这个问题,谢谢!
【问题讨论】:
-
当涉及到指针和数组时,您的问题会回答很多其他人。考虑诸如按值复制或按指针复制之类的事情(参考其他人如何称呼它)。同样的概念在这里发生了两次。
char str[] = "hello";意味着您在该数组中复制文字字符串hello,您可以在其中操作该字符串,但是当您执行char *str = "hello";时,您现在处理一个指向该文字字符串并在 @ 987654329@ 您可以阅读/访问它们,但不能编写/编辑它们。希望您现在了解其中的区别。 -
*c 不是数组语句。