我们可以更改指针指向的字符串字符吗?

时间:2014-12-14 10:12:47

标签: c pointers

假设

char* p = "alisha";

我们可以更改字符串的值,还是可以将指针指向其他位置?

在哪些情况下我们可以而且我们无法更改字符串。请举例说明。

3 个答案:

答案 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