使用char指针的字符串

时间:2018-01-25 18:34:56

标签: c string pointers char

#include<stdio.h>
 int main(void)
 {
   char s='a',*j;
   j=&s;
   *j='b';
   printf("s is %c",s);
 }

输出: s是b。

从这个程序中我们可以通过改变指针的值来改变赋值给常量char的值。

但是这不会发生在下面的程序中。

#include<stdio.h>
int main(void)
{
  char *p="Hello";
  *p='z';   //By assuming that it should change 'H' as *p points to address of H//
  printf("%c",*p);
}

输出:分段故障核心转储

即使在这种情况下,Hello中的第0个字符的值也会改变,因为我们正在操作它的指针,并且* p指向H的地址处的值。这里预期的输出是&#34; zello&#34 ;

1 个答案:

答案 0 :(得分:4)

  

从这个程序中我们可以通过改变指针的值来改变赋值给常量char的值。

没有&#34;常数字符&#34;在你的第一个片段中。它只是一个char类型的变量,用一些值初始化。它被分配在RW存储器中,因此您可以获取它的地址并修改内容。

在第二个片段中,您定义一个指针,并为其分配一个字符串文字地址,该地址分配在一个内存中。不应该被写入(通常它是只读的,或者只是一个未定义的行为写入它)。