如何修改char *的值?

How do i modify the value of char *?

嗨,我有以下程序。

char *x="abc";
*x=48;
printf("%c",*x);

这给了我输出 a,但我期望输出为 0

编辑 你能建议我可以做什么来在

中运行时存储数据吗?
char *x;

您不能(甚至尝试)修改 string literal. It causes undefined behavior

您需要使用允许写入的内存。有两种方法。

  • 将内存分配给指针x(即,通过内存分配器方法将返回的指针存储到x),然后这将是可写的,并使用复制字符串文字strcpy().

      char * x = NULL;
      if (x = malloc(DEF_SIZ)) {strcpy(x, "abc");}
    
    • 或者,不严格符合标准,但更短,strdup()

      char *x = strdup("abc");
      
  • 使用数组 x 并用字符串文字对其进行初始化。

    char x[] = "abc";
    

在上述所有情况下,x(或者更确切地说,x 指向的内存位置)是可修改的。

你不能:尝试的行为是未定义。字符串 "abc" 是一个 只读 字面值(正式类型是 const char[4])。

如果你写

char x[] = "abc";

那么你允许修改字符串。