使用 void 函数更改 const char

Changing a const char with a void function

我试图理解以下代码以及函数、void 和 char 如何协同工作。我想知道是否可以通过编辑 void 函数将 char 输出从 'a' 更改为 char 'b'?我已尝试 void foo(char *x) { *x = 'b';},但我收到一条错误消息 'core dumped',我对此感到困惑。

如果无法更改 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.

#include <stdio.h>

void foo(char *x) {
  *x = 'b';
}

int main() {
  char ch = 'a';
  foo(&ch);
  printf("ch = %c", ch);
  return 0;
}