发布时间:2026/8/15 12:59:54
98.C语言易混难点:字符数组与字符串指针的底层差异 一、两种写法的直观对比我们先看两个最常见的字符串定义char s[] hello; // 字符数组 char *p hello; // 字符串指针从表面上看二者都能通过printf(%s, s)和printf(%s, p)打印出hello但它们的底层存储位置、修改权限完全不同char s[]在栈上分配数组空间字符串内容会被拷贝到数组中可以修改。char *p指针变量保存在栈上指向只读的字符串常量区强行修改会导致程序崩溃。二、字符数组拥有独立存储空间字符数组的本质是在栈上开辟一块连续的内存空间将字符串常量的内容拷贝到这块空间中。因此数组拥有这块内存的所有权可以自由修改其中的字符。示例代码#include stdio.h int main() { char s[] hello; s[0] H; // 可以修改数组中的字符 printf(%s\n, s); // 输出Hello return 0; }底层逻辑栈上分配6字节空间hello\0。字符串常量hello的内容被拷贝到数组中。数组名s是这块内存的首地址修改s[0]会直接修改数组中的内容。三、字符串指针指向只读常量区字符串指针的本质是在栈上分配一个指针变量保存字符串常量的首地址。而字符串常量本身存储在只读的常量区不允许修改。错误示例会导致崩溃#include stdio.h int main() { char *p hello; p[0] H; // 危险修改只读常量区程序会崩溃 printf(%s\n, p); return 0; }底层逻辑栈上分配8字节64位系统的指针变量p。字符串常量hello存储在只读的常量区p保存其首地址。尝试修改p[0]会触发段错误因为常量区的内存是只读的。四、核心差异对比表特性char s[] hellochar *p hello存储位置栈上数组空间栈上指针 常量区字符串所有权数组拥有内容所有权指针仅保存地址无所有权修改权限可以自由修改禁止修改修改会崩溃适用场景需要修改字符串内容仅需读取字符串内容五、正确使用建议1. 需要修改字符串时优先使用字符数组如果后续需要修改字符串内容必须使用字符数组并提前分配足够的空间#include stdio.h #include string.h int main() { // 分配20字节空间足够容纳修改后的字符串 char s[20] hello; s[0] H; strcat(s, C); // 拼接字符串 printf(%s\n, s); // 输出Hello C return 0; }2. 仅需读取字符串时可使用指针如果只是需要读取字符串内容使用指针更节省栈空间#include stdio.h int main() { const char *p hello; // 加const更安全防止误修改 printf(%s\n, p); // 输出hello return 0; }六、一句话总结字符数组和字符串指针的核心差异不在于能否打印字符串而在于谁拥有这块字符空间数组有自己的存储空间内容可以修改指针仅保存常量区的地址内容禁止修改。在实际开发中务必根据需求选择合适的写法避免因混淆二者导致程序崩溃。

相关新闻

2026/8/15 12:54:53

智能客服Agent企业级落地:意图识别、多轮对话与业务办理全实现

很多企业上线的第一代智能客服,本质还是“关键词匹配的FAQ机器人”:只能回答固定问题,稍微换个说法就答非所问;想办个业务,翻来覆去就是几句固定话术,最后还是得转人工。用户体验差,人工降本效果有限,上线后很快就沦为摆设。 而Agent化的智能客服,是真正的第二代方案…

2026/8/15 12:54:53

三步云端部署OpenClaw AI助理:腾讯云桌面实战指南

1. 项目概述:当AI助理遇上云桌面 最近在折腾AI工具链的朋友,估计都听说过OpenClaw这个名字。它不是一个单一的软件,而是一个集成了多种开源AI模型和工具链的“瑞士军刀”,能帮你本地部署一个功能相当全面的AI助理。从文本对话、代…

2026/8/15 15:25:02

如何使用PESecurity快速检测EXE/DLL安全属性?5分钟上手教程

如何使用PESecurity快速检测EXE/DLL安全属性?5分钟上手教程 【免费下载链接】PESecurity PowerShell module to check if a Windows binary (EXE/DLL) has been compiled with ASLR, DEP, SafeSEH, StrongNaming, and Authenticode. 项目地址: https://gitcode.co…

2026/8/15 15:25:02

RyuSAK 入门指南:如何用 3 步完成 Ryujinx 模拟器资源管理

RyuSAK 入门指南:如何用 3 步完成 Ryujinx 模拟器资源管理 【免费下载链接】RyuSAK 项目地址: https://gitcode.com/gh_mirrors/ry/RyuSAK 你是否也遇到过这种尴尬:Ryujinx 模拟器好不容易装好了,结果缺固件打不开游戏,缺…

2026/8/15 15:25:02

超宽温 PT1000 分度表 (-200℃~850℃)

PT1000 分度表总结与实用建议 PT1000 分度表核心信息概括 PT1000 分度表是铂电阻温度传感器(PT1000)的温度-电阻值对应关系标准查询表,其核心信息可概括为以下几点: 基本原理:基于铂电阻的电阻值随温度变化而线性变化的…

2026/8/15 15:20:02

大模型记忆系统架构解析:从向量检索到图数据库的工程实践

1. 项目概述:当大模型需要“记住”用户在货拉拉这样日订单量巨大的同城货运平台,每天有海量的用户与司机在交互。想象一下,你是一位经常需要搬家或运送大件物品的用户,每次打开App,都希望系统能记住你的偏好&#xff1…

2026/8/15 9:46:30

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/15 7:22:41

当 LLM 遇见大文档:主流开源项目如何处理上下文超限

从 Agentic Loop 到 Repo Map,七种策略与六类陷阱引言:128K vs 10MB 的硬冲突 2026 年的 LLM 上下文窗口已达到 128K ~ 1M token(≈ 0.5MB ~ 4MB 文本),但 LLM 想要处理的真实数据规模远远超过这个量级:真实…

2026/8/15 0:04:00

AI 电动婴儿车智能功率 辅助控制、电源管理的完整选型方案

2026年随着 AI 技术在电动孕婴童用品中的深度渗透(如智能避障、自适应速度控制、能量回收),电动婴儿车对功率器件提出更高要求:高效率、小型化、低功耗、高可靠性。微碧半导体(VBsemi)基于 Trench 及 SGT 工…

2026/8/15 0:04:00

论文AIGC检测不达标完整教程!低门槛用5款工具逐步复检!

论文提交前自己先查一遍AI率,是2026年毕业生的常规动作。学校要求论文AI率低于30%,乃至于20%才能答辩… 很多同学发现一个尴尬的事情:同一篇论文,知网查出来AI率35%,维普查可能是48%,大雅、朱雀又是另外的数…

2026/8/15 9:46:39

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

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

2026/8/15 4:56:16

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

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

2026/8/15 9:46:30

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

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