我如何修改char *的值?

时间:2017-07-11 08:09:58

标签: c pointers char string-literals

嗨,我有以下程序。

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

这为我提供了输出a,但我希望输出为0

修改 你可以建议我在运行时在

中存储数据
char *x;

2 个答案:

答案 0 :(得分:4)

您不能:尝试的行为是未定义。字符串@Input() FG: FormGroup; 只读字面值(正式其类型为"abc")。

如果你写

const char[4]

然后 允许修改字符串。

答案 1 :(得分:1)

您不能(甚至尝试)修改string literal。它会导致undefined behavior

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

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

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

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

    x

在上述所有情况下,char x[] = "abc"; (或更确切地说,x指向的内存位置)是可修改的。