当前位置: 首页 > news >正文

const char*与char*、unsigned char*相互转换问题

const char*与char*相互转换的问题也是老生常谈的问题了,以前研究过很多次,时间长了还是忘记,在回顾一下。

以前我的记忆是:限制多的不能赋值给限制少的

一、核心结论(C/C++ 硬性规则)

  1. char *const char *可以直接隐式转换,不用强转(安全、放宽只读限制)
  2. const char *char *禁止隐式转换,必须强制类型转换(危险,抛弃只读约束)

1)char* 转 const char*(隐式合法)

原理:把可写指针变成只读指针,不会修改原始数据,编译器允许自动转换。 示例:

char buf[100] = "test"; char *p = buf; // 无需强转,直接赋值 const char *cp = p;

2)const char* 转 char*(必须强转,否则报错 / 警告)

原理:const代表内存只读,强行转成可写指针会破坏常量保护,编译器阻止隐式转换。

const char *cp = "abc"; char *p = cp; // 报错,非法隐式转换 // 正确写法,显式强制转换 char *p = (char *)cp;

二、结合你前面 unsigned char /char 的场景补充

char *unsigned char *双向都不能隐式互转,两边互相赋值、传参都要强制转换,和 const 规则不一样:

unsigned char ubuf[10]; char buf[10]; char *p1 = ubuf; // 警告/报错,类型不匹
http://www.jsqmd.com/news/1160256/

相关文章:

  • 纽扣电池增强器NBM5100A与PIC18F47K42的高效能源管理方案
  • CavalierContours 0.8.0 二维多段线偏移实战:从 O(n²) 到 O(n log n) 的性能优化
  • WebGoat环境搭建全攻略:从Java配置到Docker部署的深度排错
  • LSTM利率预测框架|美联储会议纪要释放哪些隐藏信号?历史规律或重新定义加息路径 时序智能预测
  • Axios POST 请求实战:3种参数传递方式与`data`/`params`区别详解
  • 高效AI专著撰写:AI工具一键生成20万字专著,附带专业写作框架!
  • trae终端不继承Python环境?3种方案彻底解决
  • 2026 东莞自动锁付与焊接自动化设备厂商调研盘点:全新整机与二手机整合服务商客观参考 - 海棠依旧大
  • 2026年降重降AI的工具推荐:如何让AI辅助论文通过AIGC检测 - 逢君学术-AI论文写作
  • 锂电池组主动平衡方案设计与BQ25887应用实践
  • 财联支付过往合作代理商有无大量投诉公司不合规运营的情况?
  • 计算机毕业设计之人力资源管理的设计与实现
  • )把文本嵌入模型换成国产模型
  • PIC18F57Q43与A3910电机驱动方案设计与优化
  • 基于MA12070与PIC18F4680的D类功放设计指南
  • InVEST 3.8.9 水源涵养模块实战:5步完成数据预处理与Z参数校准(附ArcGIS脚本)
  • 线上报价虚高?萍乡黄金回收线下实测避坑指南 - 黄金回收66
  • 2026苏州全城逸程免费上门回收品牌钻石测评 - 逸程奢侈品回收中心
  • Unity资源导入管线深度解析:从原理到自动化优化实战
  • 国产高频高分辨率高精度通用计数器,国产频率计,双通道频率计
  • 湖北新东方烹饪学校 2026 招生|中餐、西点、西餐热门专业报名指南 - 湖北找学校
  • 为什么声发射检测能够提前发现裂纹?工程师带你理解AE检测原理
  • RedisDesktopManager-Windows:Redis集群可视化监控的架构实现与性能优化
  • 企业AI编程助手选型:数据安全、合规要求与替代方案深度解析
  • 信息学奥赛 cpsj 初赛 教学手册 (一)七年105题题型分布
  • 形式化方法:Java并发bug的“数学克星“
  • 评选投票小程序推荐|好用免费的微信投票平台精选 - 微信投票小程序
  • TRAE SOLO:面向个体开发者的三端协同操作系统
  • 提示词工程:从基础概念到RAG实战的工程化方法
  • Midjourney seed值与--sref/--iw联动失效真相:资深提示工程师凌晨三点调试出的4行关键配置