假设
char* p = "alisha";
我们可以更改字符串的值,还是可以将指针指向其他位置?
在哪些情况下我们可以而且我们无法更改字符串。请举例说明。
答案 0 :(得分:3)
字符串文字存储在只读的内存中,因此无法更改它。
如果您不希望在程序中更改字符串,最好执行
char const *p = "alisha";
然后,当您尝试更改字符串时,您的程序将不因分段错误而崩溃,它将出现编译器错误(这要好得多)。< / p>
通过编写一个非常基础和简单的程序可以轻松回答您的问题,继续尝试,通过编写代码可以更好地理解问题。
答案 1 :(得分:0)
您可以更改它指向的内容。如,
char *p="cats";
printf("%s\n",p); //prints "cats"
p="bats";
printf("%s\n",p); //prints "bats"
但是,如果你想改变&#34; cat&#34;就像你操纵一个数组一样,你必须使用一个数组,如下所示:
char p[]="cats";
为您提供一系列字符{&#39; c&#39;&#39; a&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39; ; \ 0&#39;},您可以操作如下:
p[0]='b';
或其他什么
答案 2 :(得分:0)
您可以更改字符串p指向的内容。
char *p;
p = "his";
printf("%s\n", p);
p = "her";
printf("%s\n", p);
将打印
his
her