luoshengZ 发表于 2025-3-20 22:53:38

const char和char的问题

我想知道const char与char 有什么不同,分别有什么作用

FishC 发表于 2025-3-20 22:53:53

在C/C++中,const char 和 char 主要的区别在于 const 关键字的作用,它决定了变量是否可以被修改。

1. char
普通的 char 变量可以被修改,例如:

char a = 'A';
a = 'B'; // 允许修改


2. const char
const char 表示该字符变量是常量,不能被修改:

const char b = 'C';
b = 'D'; // 错误,不能修改


3. const char* 与 char* 的区别

[*]const char* ptr:指向的内容不可变,但指针本身可以指向其他地址。

const char* ptr = "Hello";
ptr = "World"; // 允许
ptr = 'h'; // 错误,不能修改内容


[*]char* ptr:指向的内容可以修改,但通常不能指向字符串常量(因为字符串常量存储在只读区)。

char str[] = "Hello";
char* ptr = str;
ptr = 'h'; // 允许


[*]char* const ptr:指针本身不可变,但指向的内容可以修改。

char str[] = "Hello";
char* const ptr = str;
ptr = 'h'; // 允许
ptr = "World"; // 错误,指针不可变


[*]const char* const ptr:指针本身和指向的内容都不可变。

const char* const ptr = "Hello";
ptr = "World"; // 错误
ptr = 'h'; // 错误



总结
- char 变量可以修改,而 const char 不能修改。
- const char* 保护指向的内容,而 char* const 保护指针本身。
- const char* const 既保护指针本身,也保护指向的内容。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

jackz007 发表于 2025-3-20 23:57:47

      有 const 前缀的变量是常量,也就是说,变量是只读的,只能在定义的时侯赋值,而且,这个值在编译的时候就是确定的,除此以外,不再允许出现在等号的左边,也就是说,不允许被赋值。
页: [1]
查看完整版本: const char和char的问题