【发布时间】:2021-11-25 07:04:51
【问题描述】:
我正在尝试理解以下代码以及函数、void 和 char 如何协同工作。我想知道是否可以将 char 输出从 'a' 更改为 char 'b',只需编辑 void 函数?我尝试过void foo(char *x) { *x = 'b';},但是我收到一条错误消息,提示“核心转储”,我对此感到困惑。
如果无法更改const char ch = 'a'; 的值,您将如何更改 char ch = 'a' 的值?
谢谢~
#include <stdio.h>
void foo(char x) {
x = 'b';
}
int main() {
const char ch = 'a';
foo(ch);
printf("ch = %c", ch);
return 0;
}
【问题讨论】:
-
你为什么要改变你声明
const的东西的价值?这违背了将其设为const的意义 -
你真正想做什么?
-
代码不是试图改变
const的值,而是函数本地的一个副本。 -
您可能收到了错误,因为
ch的值存储在只读内存区域中。通过明确地将ch设为const,编译器完全可以这样做。通过尝试写入只读区域,您可能触发了访问冲突。