字符串部分语法内容(更新中

news/2024/12/20 14:09:58/文章来源:https://www.cnblogs.com/WisdomWu/p/18613943

字符串部分语法内容

一.字符与ASCII码

1.字符

Q:字符串的作用
A:在日常使用中,我们需要计算机帮我们处理各种各样的文字,比如写文档,写代码,各种文字记录在计算机中,就需要用到字符串或者字符数组将文字内容存储在计算机中。

字符串由字符组成,字符是单引号包含的一个字形单位,例如'a','5','#','\n'。

单个字符的格式化说明符为%c,因此要输出一个字符,有以下代码:

    printf("%c",'a');//输出字符a

如果你不小心将%c写为了%d,那么此时你的程序仍然可以运行而并不会报错,但此时输出的结果不再是a,而是97,这个不小心输出的97就是字符a的ASCII码值。

2.ASCII码

字符在计算机内通过存储其对应的ASCII码值来存储其内容。
以下是常见的ASCII码值:

可以尝试手敲以下代码,便可轻松理解ASCII码和字符的概念。

    printf("%d\n", 'a');//输出字符a的ASCII码值printf("%c\n", 'a');//直接输出字符aprintf("%d\n", 63);//直接输出值63printf("%c\n", 63);//通过ASCII码63输出对应的值,应为‘?’

除了以上可显示出来的字符外,还有一些可以起到控制或者其他功能的字符叫做转义字符,比如常见的\n就是一个转义字符,表示为换行操作,下表为常见的转义字符。

二.字符串的存储与初始化

1.字符串的组成与存储形式

字符串是由双引号包含的若干个字符组成,如"a123","hello world","*",""等。
字符串在存储时会在末尾自动添加'\0'作为结束标志,以下为"hello world"和空串的存储示例:

字符常量与字符串常量不同,如字符'a'在计算机存储的只有a的ASCII码一个数据,而字符串"a"存储的为两个数据,分别是a的ASCII码和结束符"\0"两个数据。

Q:C语言中字符串是如何存储的?
A:第一种方式为字符数组,第二种方式为字符指针

(1)字符数组

字符数组是由于若干个数组元素组成的,它可用来存放整个字符串。(即用字符数组来存放字符串)。

    char str[20];

!!!请注意,如果一个字符数组结尾没有存储"\0",那么这个字符数组只能是字符数组而不能表示为字符串。字符串的结尾一定要加上结束符!

Q:如何对字符数组进行初始化。
A:同样也有两种方式。第一种为逐个元素进行初始化,第二种为利用字符串常量直接初始化。

(a)逐个元素初始化(类似于数组元素逐个初始化)

    char str[6]={'c','h','i','n','a','\0'};//千万不要忘记末尾要存储结束符

(b)用字符串常量直接对数组初始化

    char str[11] = {"china"};char str[11] = "China";

如果创建的字符数组长度大于存储的字符数,那么系统会在空元素处自动补上结束符。

将以上代码敲进编译器中,并在监视器中显示,可以看到如图显示的各个元素的值。

(2)字符指针

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

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

相关文章

Java项目实战之基于springboot+vue+mysql+jpa+redis的企业网站搭建设计文档设计与实现

一、引言 1.1 项目背景 随着互联网的飞速发展,企业网站已成为企业展示形象、推广产品和服务、与客户沟通的重要窗口。为了提升企业的竞争力,需要构建一个功能完善、用户体验良好的企业网站。 1.2 项目目标 本项目旨在打造一个专业、高效、易用的企业网站,满足企业在品牌展示…

2024 新版Pycharm安装使用教程(附激活至2099年,以及常见问题处理)

Pycharm 简介 Pycharm 是一款非常强大的Python集成开发环境(IDE),由JetBrains公司开发。它提供了丰富的功能和工具,帮助开发者更高效地编写、调试和部署代码。 下面这种方式仅供交流学习,如果有能力还请支持正版 下载安装 为了方便,也可以去链接取 点击获取安装包开始安装下…

OpenCL 编程步骤 4. 创建命令队列 Command Queue

转载 https://deepinout.com/opencl/opencl-basic-tutorials/opencl-create-command-queue.html 在OpenCL上下文中,有内存、程序和内核对象,对这些对象的操作就需要使用命令队列。一条命令就是主机发送给设备的一条消息,用来告诉设备执行一个操作。这个操作包含主机与设备间…

Java线程 interrupt 方法使用异常

背景 需要在异步任务中中断任务的执行,故选择通过调用 interrupt 方法对线程设置中断信号。 在比较耗时的业务代码增加判断 Thread.currentThread().isInterrupted() 抛出异常停止任务执行,并回退任务。 问题 中断信号发出后,任务线程一直未检测到中断信号状态。 以下为测试…

人员检测视频分析服务器安装网络监控系统时有哪些常见的技术挑战?

在构建一个高效、可靠的网络监控系统时,技术人员需要面对一系列技术挑战,这些挑战覆盖了从系统集成到信息安全的各个环节。随着技术的不断进步,尤其是在人工智能和物联网技术的推动下,安防监控系统变得更加复杂和强大。以下是在安装网络监控系统时可能遇到的一些常见技术挑…

六款电脑端简单好用的时间管理app对比推荐

今天分享六款压箱底的时间管理app,简单且好用,让你从此不再拖延!因为我平时工作用Windows电脑比较多,所以主要介绍可以在Win电脑端使用的,部分app还支持在手机端实时同步! 1、微软待办todo 微软生态系统集成,“我的一天” 可将今日任务展示于首页及 Widget 小组件。 “建…

jellyfine套件登录忘记密码

1.ssh登录群晖,管理员模式,进入蓝色路径 var--config---system.xml 2. 用vim命令修改文件内容将<IsStartupWizardCompleted>true</IsStartupWizardCompleted>改成<IsStartupWizardCompleted>false</IsStartupWizardCompleted>重启jellyfin ,重新初始…

排查Java进程占用CPU高的原因

背景 一般java程序占用cpu内存都不会太高,出现占用高的情况,第一反应就是,进程在某个地方死循环了。排查top -Hp 15057 查看下进程中的线程资源占用情况由上图可见,CPU时间片主要是被15393 这个线程给吃掉了, 所以目标锁定在 15393。 执行 printf "%x\n" 15393,…

Java 项目愚蠢的分层及解决方案

《整洁架构之道》的最后一章《细节决定成败》又在讨论 Javaer 永恒的问题:分层后 DAO Service Controller 应该按功能分包还是按层分包。 按功能分包的人认为这些文件在业务上是一起的,应该放在同一个包。按层分包的人认为每个层代表了不同的技术,应该按层分包。 可以想象,…

JS信息收集

引子:上一篇所介绍源码信息收集,主要针对目标站点不可见的后端源码进行收集,往往能收集到的概率小但危害较大。而本篇则介绍针对前后端分离&前端Web的JS的信息收集,由于源码本身可见,因此收集重点从源码转为源码中的敏感信息。免责声明:本文章仅用于交流学习,因文章…

vector容器/构造函数/赋值操作/容量和大小/插入和删除/数据存储/互换容器/预留空间

vector基本概念 功能: vector数据结构和数组非常相似,也称为单端数组vector与普通数组区别: 不同之处在于数组是静态空间,而vector可以动态扩展 动态扩展: 并不是在原空间之后续接新空间,而是找更大的内存空间,然后将元数据拷贝新空间,释放原空间vector容器的迭代器是支…

Win11系统如何更改为Win10右键菜单样?Win11系统更改为Win10右键菜单样式方法

Win11系统更改为Win10右键菜单样式方法: 1、按“Win+X”或者鼠标右键点击“开始”菜单,打开“终端管理员”。如下图:2、在命令输入下方命令: reg add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve3、按“Enter(…