鱼C论坛

 找回密码
 立即注册
查看: 148|回复: 2

[已解决]const char和char的问题

[复制链接]
发表于 2025-3-20 22:53:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我想知道const char与char 有什么不同,分别有什么作用
最佳答案
2025-3-20 22:53:53
在C/C++中,const charchar 主要的区别在于 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[0] = 'h'; // 错误,不能修改内容
  • char* ptr:指向的内容可以修改,但通常不能指向字符串常量(因为字符串常量存储在只读区)。
    char str[] = "Hello";
    char* ptr = str;
    ptr[0] = 'h'; // 允许
  • char* const ptr:指针本身不可变,但指向的内容可以修改。
    char str[] = "Hello";
    char* const ptr = str;
    ptr[0] = 'h'; // 允许
    ptr = "World"; // 错误,指针不可变
  • const char* const ptr:指针本身和指向的内容都不可变。
    const char* const ptr = "Hello";
    ptr = "World"; // 错误
    ptr[0] = 'h'; // 错误


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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2025-3-20 22:53:53 | 显示全部楼层    本楼为最佳答案   
在C/C++中,const charchar 主要的区别在于 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[0] = 'h'; // 错误,不能修改内容
  • char* ptr:指向的内容可以修改,但通常不能指向字符串常量(因为字符串常量存储在只读区)。
    char str[] = "Hello";
    char* ptr = str;
    ptr[0] = 'h'; // 允许
  • char* const ptr:指针本身不可变,但指向的内容可以修改。
    char str[] = "Hello";
    char* const ptr = str;
    ptr[0] = 'h'; // 允许
    ptr = "World"; // 错误,指针不可变
  • const char* const ptr:指针本身和指向的内容都不可变。
    const char* const ptr = "Hello";
    ptr = "World"; // 错误
    ptr[0] = 'h'; // 错误


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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-3-20 23:57:47 | 显示全部楼层
      有 const 前缀的变量是常量,也就是说,变量是只读的,只能在定义的时侯赋值,而且,这个值在编译的时候就是确定的,除此以外,不再允许出现在等号的左边,也就是说,不允许被赋值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-2 21:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表