【发布时间】:2020-12-11 17:27:27
【问题描述】:
我正在尝试将字符转换为字符串,但如果我这样做......
char* Make_String(char ch)
{
char *d = " "; //(char*)malloc(2*sizeof(char));
d[0] = ch;
d[1] = '\0';
return d;
}
... 那么输出不包含我期望的字符。另一方面,如果我通过malloc 动态分配内存(如// 之后的注释部分所示),那么它工作正常。请解释为什么会这样。
【问题讨论】:
-
你不能修改字符串文字。
-
好的。著名的 。但这如何选择性地避免在最终结果中打印操作数。
-
通过给你的程序提供未定义的行为。您的 C 实现能力范围内的任何事情都可能发生。该语言没有为解释您观察到的特定行为提供依据。然而,猜测一下,在这种情况下可能发生的情况是您尝试修改的单空格字符串文字根本没有被修改。
标签: c string memory dynamic character