C语言从头学30——字符串

1.基本概念
       C语言没有独立的字符串类型,字符串被当作字符数组处理。但在处理字符串时,在字符串最后一个字符后边会自动添加一个全是二进制 0 的字节,写作 "\0" 字符,表示字符串结束。所有字符串的最后一个字符,都是 "\0" 。这样不需知道字符串的长度,就可以读取内存里面的字符串,一旦读到字符 "\0" 则字符串结束。也由此,声明的字符串长度与实际能存放的字符串长度差一个,即 "\0" 。
       正因为字符串是字符数组,所以有关数组的操作对于字符串同样适用。
       字符串数组赋初值可以写成大括号内单引号引着的一个个字符。这样写是太麻烦,实际中的字符串赋初值是用一对双引号把连续字符引起来;它与字符数组等价,但形式简单。例如:
       char myStr[] = "Hello World!";  //强调:这种写法只能是在字符数组声明时赋初值
       上面声明的字符串,名:myStr 长度:13(包含空格、结尾"\0")。这个 "\0" 一定要牢记,比如:char a='1'; 与char a[] = "1";  这两者一个是双引号一个是单引号,区别就在 "\0"上,"1"不但有1还有 "\0",而'1'只有1。
       如果字符串中,本身就包含双引号怎么办呢?给双引号前边加上一个反斜杠(称为转义符)即\",就把双引号加到字符串中了。
       上面的举例如写成:myStr[]="Hello ""World";(即连续的几对双引号都赋给一个字符串)也是符合语法的,不会报错。
       在printf函数中输出字符串:常量直接输出,变量用%s占位符输出。
2.字符串变量的声明
      字符串变量可以按字符数组形式声明,也可以用指向字符数组的指针形式进行声明。
      char myStr[1024] = "C语言从头学"; //声明长度1024字节实际使用不了会初始化成 "\0"
                                                              //如果不写具体长度只写空的[ ],计算机会自己计算所需要的长度
      char* myStr = "C语言从头学";
      上面的声明形式上差不多,但还是有差异,表现在:
       a.字符数组声明的字符串变量可以一个一个字符进行修改,但不能重新赋值;
              char a[]="1134"; a[0]='0'; a[1]='2'; //合乎语法
             但如果:a[]="4311"; //会报错
       b.指针方式声明的字符串变量可以重新赋值,但不能单个字符进行修改;
              char* b="1111"; b="2222"; //合乎语法
              但如果:b[0]='2'; //可能报错或出现错误运算结果
3.说明:单独字符能不能修改的原因:为什么字符串声明为指针时不能单独字符修改,声明为数组时就可以修改?原因是声明为指针时,字符串是一个保存在内存“栈区”的常量,“栈区”的值由系统管理,一般都不允许修改;声明为数组时,字符串的副本会被拷贝到内存“堆区”,“堆区”的值由用户管理,是可以修改的。整个字符串能不能修改原因:以指针形式声明的字符串变量,因为其是变量故可以指向其它的字符串;而字符数组变量虽称作变量但不能指向另一个字符串,因为字符数组的数组名总是指向初始化时的地址,不能修改。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/41997.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Apache Seata分布式事务启用Nacos做配置中心

本文来自 Apache Seata官方文档,欢迎访问官网,查看更多深度文章。 本文来自 Apache Seata官方文档,欢迎访问官网,查看更多深度文章。 Seata分布式事务启用Nacos做配置中心 Seata分布式事务启用Nacos做配置中心 项目地址 本文作…

My Greedy Algorithm(贪心算法)之路(一)

引子:我们之前,其实也遇到过贪心算法,0,1背包就是一个典型的贪心算法问题,那今天我就来开始my-Greedy Algorithm的道路。 什么是贪心算法? 我愿称贪心算法为贪婪鼠目寸光,贪心算法(Greedy Alg…

2024年AI技术深入研究

2024年AI技术持续快速发展,应用领域广泛,产业发展迅速,市场趋势积极,学术研究深入。 AI技术进展大模型发展 2024年,智谱AI正在研发对标OpenAI Sora的高质量文生视频模型,预计最快年内发布。智谱AI的进展显示了国内AI大模型领域的快速发展,以及与国际领先技术的竞争态势…

代码随想录-Day49

300. 最长递增子序列 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的 …

【话题】AI是在帮助开发者还是取代他们

大家好,我是全栈小5,欢迎阅读小5的系列文章,这是《话题》系列文章 目录 引言AI在代码生成中的应用AI在错误检测和自动化测试中的作用对开发者职业前景的影响技能需求的变化与适应策略结论文章推荐 引言 随着人工智能(AI&#xff…

接口测试工具Postman

Postman Postman介绍 开发API后,用于API测试的工具。在我们平时开发中,特别是需要与接口打交道时,无论是写接口还是用接口,拿到接口后肯定都得提前测试一下。在开发APP接口的过程中,一般接口写完之后,后端…

【最新整理】全国高校本科及专科招生和毕业数据集(2008-2022年)

整理了各省高校本科、专科招生和毕业数据等21个相关指标,包括招生、在校、毕业人数,以及财政教育支出、教育经费等数据。含原始数据、线性插值、回归填补三个版本,希望对大家有所帮助 一、数据介绍 数据名称:高校本科、专科招生…

深入探索WebKit:DOM操作的核心机制

深入探索WebKit:DOM操作的核心机制 WebKit是一个开源的浏览器引擎,它驱动了许多流行的浏览器,包括Safari、Google Chrome(早期版本)和Epiphany。WebKit的核心功能之一是对文档对象模型(DOM)的操…

JWT(Json Web Token)在.NET Core中的使用

登录成功时生成JWT字符串目录 JWT是什么? JWT的优点: JWT在.NET Core 中的使用 JWT是什么? JWT把登录信息(也称作令牌)保存在客户端为了防止客户端的数据造假,保存在客户端的令牌经过了签名处理&#xf…

LT8712 支持USB Type-C的DP到HDMI/VGA 用于对接站 适配器

描述 LT8712是一个DisplayPort(DP)到HDMI和VGA转换器,设计用于同时连接一个DP源到一个VGA收发器和最多两个HDMI收发器。LT8712集成了一个DP1.2兼容的接收器、一个高速三通道视频DAC和两个HDMI1.4兼容的发射器(发射器0和发射器1)。接收端口集成了CC控制器&#xff0c…

html+js+css做的扫雷

做了个扫雷&#x1f4a3; 88大小 源代码在文章最后 界面 先点击蓝色开局按钮 然后就可以再扫雷的棋盘上玩 0代表该位置没有雷 其他数字代表周围雷的数量 源代码 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8&qu…

价格预言机的使用总结(一):Chainlink篇

文章首发于公众号&#xff1a;Keegan小钢 前言 价格预言机已经成为了 DeFi 中不可获取的基础设施&#xff0c;很多 DeFi 应用都需要从价格预言机来获取稳定可信的价格数据&#xff0c;包括借贷协议 Compound、AAVE、Liquity &#xff0c;也包括衍生品交易所 dYdX、PERP 等等。…

【腾讯内推】腾讯2025校招/青云计划/社招——长期有效

及时跟进进度&#xff0c;保证不让简历石沉大海&#xff01; 涵盖NLP/CV/CG/ML/多模态/数据科学/多媒体等各方向! 定向匹配优质团队/竞争力薪酬/覆盖全球工作地点! 招聘对象: 本硕博:2024年1月-2025年12月毕业的同学 目前最热岗位: 技术研究-自然语言处理 技术研究-计算机视觉 …

【Linux】进程创建和终止 | slab分配器

进程创建 fork 1.fork 之后发生了什么 将给子进程分配新的内存块和内核数据结构&#xff08;形成了新的页表映射&#xff09;将父进程部分数据结构内容拷贝至子进程添加子进程到系统进程列表当中fork 返回&#xff0c;开始调度器调度 这样就可以回答之前返回两个值&#xff1f…

Java面试八股之MySQL存储货币数据,用什么类型合适

MySQL存储货币数据&#xff0c;用什么类型合适 在MySQL中存储货币数据&#xff0c;最合适的类型是DECIMAL。这是因为货币数据通常需要高精度&#xff0c;尤其是对于财务交易&#xff0c;即使是极小的精度损失也可能导致严重的会计错误。DECIMAL类型可以提供固定的精度&#xf…

c++:struct和class的区别

C和C中struct的区别 (1)C中不支持成员函数&#xff08;只能通过函数指针成员变量间接支持&#xff09;&#xff0c;而C源生支持。 (2)C中不支持static成员&#xff0c;而C中支持。后面会详细讲&#xff0c;C static class是一个大知识点 (3)访问权限&#xff0c;C中默认public…

vue-element-admin搭建步骤

克隆项目 git clone https://github.com/PanJiaChen/vue-admin-template.git进入项目目录 cd vue-admin-template安装依赖 npm install --registryhttps://registry.npm.taobao.org启动服务 npm run dev浏览器访问 http://localhost:9528 发布 构建测试环境 npm run bui…

利用 Hexo 搭建个人博客

〇、前言 本文将会讨论&#xff0c;如何将 CSDN 上的博客&#xff0c;拉取到本地&#xff0c;然后PicGo、Hexo、Github 等工具建立个人博客&#xff0c;环境为 Ubuntu 20.04。 一、利用 Hexo 预备工作 首先安装 Node.js、npm、git工具。 > node -v v12.22.9 > npm -…

《梦醒蝶飞:释放Excel函数与公式的力量》9.1 PMT函数

9.1 PMT函数 PMT函数是Excel中用于计算贷款或投资每期付款金额的函数。它是一个非常实用的财务函数&#xff0c;能够帮助我们快速计算等额本息还款金额。 9.1.1 函数简介 PMT函数用于计算贷款的等额分期付款金额。它根据贷款总额、利率和贷款期数&#xff0c;计算每期需要偿…

大模型日报 2024-07-06

大模型日报 2024-07-06 大模型资讯 ⏩支付宝发布多模态医疗大模型&#xff0c;联合 20 家机构发起医疗 AI 共建计划 支付宝发布多模态医疗大模型&#xff0c;联合 20 家机构发起医疗 AI 共建计划。旨在推动 AI 在医疗领域的创新应用&#xff0c;通过多模态数据整合和分析&#…