发布时间:2026/8/17 15:50:03
char * 和 std::string 1 char * 和 std::string 的区别char * 字符串是常量字符串不能修改std::string 指向的字符串可以修改实例代码如下图所示s1 和 s2 均是常量字符串字符串常量保存在只读数据区是只读的不能写代码中注释的那两行代码会导致段错误。s3 是字符数组字符数组是可以修改的std::string 类型的字符串也是可以修改的。#include stdlib.h #include stdio.h #include iostream #include string #include cstring int main() { char *s1 hello; char *s2 hello; char s3[] hello; std::string s4 hello; printf(s1 addr %p, s2 addr %p, s3 addr %p, s4 addr %p\n, s1, s2, s3, s4.c_str()); printf(sizeof(s1) %d, sizeof(s3) %d, sizeof(s4.c_str()) %d\n, sizeof(s1), sizeof(s3), sizeof(s4.c_str())); // s1[1] a; // s2[1] a; s3[1] a; s4[1] a; std::cout s1 s1 , s2 s2 , s3 s3 , s4 s4 std::endl; return 0; }代码运行之后可以看到 s1 和 s2 是常量字符串这两个指针指向的地址也是相同的。从 s1s2 的地址和 s3s4 的地址对比可以看出s3 和 s4 的地址相距比较近和 s1、s2 的地址相距比较远。s1、s2 和 s3、s4 保存的段都不一样前者保存在只读数据段后者保存在栈所以地址差距才会大。sizeof一个char*类型就是指针的大小在64位系统上是832位系统上是4sizeof s3返回的是一个数组的大小数组的大小就是这个数组所占的空间包含了字符串结尾的\0。strlen是纯字符串的长度不包含字符串结尾的\0。2 std::string 是深度拷贝如下图所示 有 3 个字符串s1、s2 和 s3。s2 是基于 s1 通过拷贝构造而来将 s2[1] 赋值为 a然后打印 s1 和 s2s1 仍为 hellos2 为 hallo说明 s1 和 s2 相互不影响是深拷贝。s3 被 s1 赋值将 s3[1] 赋值为 m然后打印 s1 和 s3s1 仍为 hellos3 为 hmllos1 和 s3 相互没有影响。#include iostream #include string int main() { std::string s1 hello; std::string s2 s1; std::cout 1, s2 s1 std::endl; s2[1] a; std::cout 2, s2 s2 , s1 s1 std::endl; std::string s3 aaa; s3 s1; std::cout 1, s3 s3 std::endl; s3[1] m; std::cout 2, s3 s3 , s1 s1 std::endl; return 0; }运行结果如下3 std::string capacity如下代码声明了一个空字符串 s1打印出来了 s1.capacity是 15也就是说 std::string 默认就会有 15 的空间。通过这样预申请空间的方式避免了小字符串申请内存也是一种用空间换时间的方法。如果字符串的大小不大于 15就不会申请堆空间如下代码可以验证。执行结果使用 gdb 调试对 malloc 设置断点可以查看上边的代码哪一行调用了 malloc()。第 11 行字符串长度是 16大于 15 了需要申请内存。第 12 行拷贝构造深拷贝长度大于 15需要申请内存。第 14 行赋值运算符长度大于 15需要申请内存。第 16 行新创建的 s6长度大于 15需要申请空间。代码第 17 行将 s4 赋值给 s6虽然 s4 的长度大于 15但是当前 s6 的 capacity() 是 20完全能够放得下 s4所以不需要再申请空间。4char数组#include stdlib.h #include stdio.h #include string.h #include iostream int main() { char a[] Hello; char b[] {H, e, l, l, o}; char *c Hello; int d 0; printf(sizeof(a) %d, sizeof(b) %d, sizeof(c) %d\n, sizeof(a), sizeof(b), sizeof(c)); std::cout a , b , c std::endl; printf(a: %s, b: %s, c: %s; a %p, b %p, c %p, d %p\n, a, b, c, a, b, c, d); return 0; }a和b都是char数组但是a和b所占用的内存空间是不一样的a最后有一个字符串结束符b没有。c是字符指针。a和b是数组可以修改c是字符指针指向只读内存不能修改。a、b、c都是保存大栈上并且对比3者的地址大小可以看大栈是向下生长的c指向只读数据区。打印b的时候因为b是字符串类型直到遇到字符串结束符才会结束所以会打印两个Hello把a指向的字符串也打印出来了。sizeof传入数组名的话返回的是数组的长度c就是一个指针大小与字长有关。

相关新闻

2026/8/17 15:45:02

碳硅活系统动力学迁移闭环范式深度研究报告——基于虚拟生物沙盘、RAE递归对抗引擎与认知流形的全链路实证剖析

碳硅活系统动力学迁移闭环范式深度研究报告——基于虚拟生物沙盘、RAE递归对抗引擎与认知流形的全链路实证剖析 作者:方见华 单位:世毫九实验室 核心逻辑摘要 本报告围绕虚拟生物沙盘(碳基活系统试验场)→观测提炼碳基自组织/自稳…

2026/8/17 15:45:02

认知几何学中意识表征的通用纤维丛模型系统研究

认知几何学中意识表征的通用纤维丛模型系统研究 作者:方见华 单位:世毫九实验室 核心摘要(表征逻辑锚定) 以纤维丛的微分几何结构作为无歧义的数学中介,建立覆盖全体验类型的意识二分表征框架: 1. 底流形&a…

2026/8/17 16:35:17

单片机毕设选题推荐:基于 51/STM32 单片机的 DS18B20 与 TDS 水质检测系统设计 基于 51/STM32 单片机的 LCD1602 水环境数据显示报警装置设计(018103)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/8/17 16:35:17

【电容三点式振荡器仿真成功条件】2024-12-14

缘由电容三点式电路不起振怎么办🆘_硬件开发-CSDN问答 这个电路按要求设计的 ,为什么会不起振,有无大人能抽空帮忙看一下 本电流起振荡的条件是开关的作用,仿真运行后接通开关, 从示波器观察振荡波形;调节好…

2026/8/17 16:35:17

华为IPD流程各阶段370个活动详解-(一) 概念阶段流程与活动

华为IPD流程涵盖了产品从概念到上市的完整过程,各阶段活动明确且相互衔接。在概念启动阶段,产品经理和项目经理分析可行性,PAC评审后成立PDT。概念阶段则包括产品描述、市场定位、投资期望等内容的确定,同时组建PDT核心组并准备项目环境。团队培训涵盖团队建设、流程、业务…

2026/8/17 10:49:52

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/17 5:02:51

工业传感器与变送器详解:序章 从物理世界到工业数据

序章 从物理世界到工业数据 ——重新认识工业传感器与变送器 工业自动化系统正变得日益复杂。今天的工业现场早已不是简单的控制回路,而是由多层技术共同构成的立体体系:PLC、DCS、SCADA、MES、工业互联网、边缘计算与人工智能。控制系统可以执行复杂算法,工业网络可以实现…

2026/8/17 0:02:57

LabVIEW异步调用实战:解决界面卡顿与并行处理难题

1. 项目概述:为什么异步调用是LabVIEW进阶的必经之路如果你在LabVIEW里写过稍微复杂点的程序,尤其是涉及到界面响应、多任务并行或者硬件IO等待,大概率会遇到一个头疼的问题:程序“卡”住了。前面板点不动,进度条不更新…

2026/8/17 0:02:57

飞书局域网文件传输实战:3种方案实现高速点对点传输

1. 项目概述:为什么要在局域网内用飞书传文件? 飞书作为一款主流的协同办公套件,其核心功能是围绕云端协作设计的。无论是文档、表格还是文件,通常的分享逻辑都是“上传到云端 -> 生成链接 -> 分享给同事”。这个流程在互联…

2026/8/17 15:07:41

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/16 16:53:03

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/15 9:46:30

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…