初识C语言—字符串、转义字符、注释

字符串

字符串就是一串字符

用英文双引号括起来的字符

int main()
{"dasgfhjkasg\n""hello world!"return 0;
}

字符串的结束标志是\0这个转义字符

如何证明呢?

int main()
{//字符数组 - 数组是一组相同类型的元素char arr[] = "hello";//方括号内不写数组长度时,会根据后面元素来初始化return 0;
}

运行时查看调试监视arr中可以看到

数组的第六位存放'\0'

所以\0是字符串结束的标志,字符串结尾都隐藏了一个\0

结束标志如何理解
#include<stdio.h>
int main()
{char arr1[]="abc";char arr2[] = {'a','b','c'};printf("%s\n", arr1);printf("%s\n", arr2);return 0;
}

运行监视

//arr1 中有四个元素 - 多一个 \0
//arr2 中有三个元素

运行结果

abc
abc烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫贴-␦→

我们来看空间内容

数组名称内存块
arr1abc\0
arr2abc

arr2打印完成后后面空间是未知的,没有停止符号,所以会继续打印乱码

测试放入\0

int main()
{char arr1[]="abc";char arr2[] = {'a','b','c','\0'};printf("%s\n", arr1);printf("%s\n", arr2);return 0;
}

结果

abc
abc

再次验证一下

求字符串长度
strlen();  //求字符串的长度 string length
int len = strlen("abc");
printf("%d",len);

输出结果

3

出现警告strlen未定义 - 出现原因,没有引用头文件

需要引用

#include <string.h>

字符串的结束标志\0仅仅是结束标志!!!

当我们求长度时并不计算在内!!!

#include<stdio.h>
#include <string.h>
int main()
{char arr1[] = "abc";char arr2[] = { 'a','b','c' };printf("%d\n", strlen(arr1));printf("%d\n", strlen(arr2));return 0;
}

运行结果

3
42//随机值,直到找到\0才会停下

意料之中,因为没有终止符,所以字符串长度为随机值

#include<stdio.h>
#include <string.h>
int main()
{char arr1[] = "abc";char arr2[] = { 'a','b','c','\0'};printf("%d\n", strlen(arr1));printf("%d\n", strlen(arr2));return 0;
}

运行结果

3
3

完美!


转义字符

#include<stdio.h>
​
int main()
{printf("C:\test\test.c");return 0;
}

打印结果

C:      est     est.c

转义字符:转变了原来的意思

三字母词已经不支持 — 比如 ??) 会变成 ]

例如

int main()
{printf("%c",''');return 0;
}

报错是因为单引号,所以我们需要转义一下

int main()
{printf("%c",'\'');return 0;
}

输出结果

'

printf在打印数据的时候可以指定打印的格式

printf("%d",100);
printf("%c",'a');
printf("%s","abc");

如何不让斜杠被认为是转义字符

\t会被转义成水平制表符,我们可以用斜杠转义斜杠来解决上面的问题

#include<stdio.h>
​
int main()
{printf("C:\\test\\test.c");return 0;
}

打印结果

C:\test\test.c

成功!

\转义字符 意义 ASCII码值(十进制) \a 响铃(BEL) 007 \b 退格(BS) ,将当前位置移到前一列 008 \f 换页(FF),将当前位置移到下页开头 012 \n 换行(LF) ,将当前位置移到下一行开头 010 \r 回车(CR) ,将当前位置移到本行开头 013 \t 水平制表(HT) (跳到下一个TAB位置) 009 \v 垂直制表(VT) 011 \ 代表一个反斜线字符’’’ 092 ’ 代表一个单引号(撇号)字符 039 " 代表一个双引号字符 034 ? 代表一个问号 063 \0 空字符(NUL) 000 \ddd 1到3位八进制数所代表的任意字符 三位八进制 \xhh 十六进制所代表的任意字符 十六进制


\ddd 1到3位八进制数所代表的任意字符 三位八进制

int main()
{printf("%c\n",'\130');return 0;
}

输出结果

X  //——ASCII码值为88

八进制130转化为十进制为88


键盘上可以打出各种字符

各种字符是如何存储的

A — 65

B — 66

a — 97

ASCII码表:每一个字符都有一个值:ASCII值

\xhh 十六进制所代表的任意字符 十六进制

int main()
{printf("%c\n",'\X30');return 0;
}

输出结果

0 //’0‘的ASCI码值为48,十六进制为30

面试题

#include<stdio.h>
int main()
{//问题1:在屏幕上打一个单引号,怎么做//问题2:在屏幕上打一个字符串,字符串的内容是一个双引号”,怎么做printf("%c\n", '\‘');printf("%s\n", "\"");return 0;
}

这道题不难,根据上面的内容可以直接给出答案


笔试题:

//程序输出什么?
#include<stdio.h>
int main()
{    printf("%d\n",strlen("abcedf"));  printf("%d\n",strlen("C:\test\328\test.c"));return 0;
}

答案为

14//转义字符算一个字符

魔鬼细节

/328

我们很容易想到上面的 — \ddd 1到3位八进制数所代表的任意字符 三位八进制

但是八进制数怎么能出现8呢朋友


注释

用来解释复杂代码

//这种注释风格是C++注释风格
/*
这种注释风格是C语言的注释风格
*/
//这种最为常用,C语言注释不支持嵌套注释,所以C++风格更常用

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

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

相关文章

基于注解完成基本类型属性赋值 (DI)

在上一篇文章中&#xff0c;介绍了如何基于注解的方式自动为引用类型的属性赋值&#xff0c;这里介绍如何为基本类型的属性赋值。 为基本类型的属性赋值&#xff0c;使用注解Value。通常用于注入外部数据&#xff0c;或者我们可以直接手动赋值。 步骤如下&#xff1a; 声明外…

【个人开发】llama2部署实践(一)——基于CPU部署

1. Anaconda安装 mkdir -p /opt/anaconda cd /opt/anaconda # 参考链接&#xff1a;https://repo.anaconda.com/archive/index.html wget https://repo.anaconda.com/archive/Anaconda3-2023.07-2-Linux-x86_64.sh sh Anaconda3-2023.07-2-Linux-x86_64.sh2.安装git yum inst…

【动态规划】代码随想录算法训练营第四十三天 |1049. 最后一块石头的重量 II,494. 目标和,474.一和零 (待补充)

1049. 最后一块石头的重量 II 1、题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 2、文章讲解&#xff1a;代码随想录 3、题目&#xff1a; 有一堆石头&#xff0c;每块石头的重量都是正整数。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后…

PCB行业IPC标准内容介绍及子标准文件总结

🏡《总目录》 目录 1,概述2,标准内容简介3,IPC标准总结4,总结1,概述 IPC二级标准是针对电路板质量而制定的国际标准。它主要涉及到电路板的设计、制造和检验等方面,旨在确保电路板的质量、可靠性和性能达到一定的标准。 2,标准内容简介 IPC标准主要包括如下四个方面的…

Text Field文本输入框

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 Text Field文本输入框 一、最基本的本文输入框1、基础示例2、一些表单属性3、验证 二、多行文本 一、最基本的本文输入框 1、基础示例 import {Box, TextField} from "…

Ele admin pro和iView Admin pro的用户管理页面对比

Ele admin pro和iView Admin pro都是非常优秀的B端框架&#xff0c;功能大同小异&#xff0c;本文就着重比对一下二者的用户案例页面&#xff0c;让老铁们感知一些细节。 一、用户列表 用户列表 用户列表 二、用户编辑 三、用户添加 四、角色管理 五、权限分配 六、角色添加

我曾走在崩溃的边缘:俞敏洪亲述新东方创业发展之路 -- 读书笔记

读完这本书后&#xff0c;启发很大&#xff0c;尤其说的只要坚持做正确的事情&#xff0c;好的结果自然会来。人生就是一场马拉松&#xff0c;起起伏伏很正常&#xff0c;关键是要坚持做正确的事情&#xff0c;从绝望中寻找希望。这本书&#xff0c;是在微信阅读app上阅读的。 …

基于GIS、RS、VORS模型、CCDM模型、geodetecto、GWR模型集成的生态系统健康的耦合协调分析

城市群是一国经济发展水平的象征&#xff0c;也是一国经济发展到一定阶段的标志&#xff0c;我国城市群建设体量不断增加&#xff0c;将成为全球经济的核心&#xff0c;中国城市群的建设逐步引领全球进入到了21世纪的中国新时代。然而&#xff0c;高速的城镇化发展&#xff0c;…

Elastic Stack--07--JavaAPI----文档(新增 、修改 、 查询 、 删除)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 JavaAPI-文档1.新增 Insert2.修改 Update3.查询 Get4.删除 Delete5.批量操作 BulkRequest批量新增批量删除 高级查询1.查询所有索引数据2.条件查询3.分页查询4.查询…

Mysql数据库-基本表操作

1.表操作 创建表&#xff1a;CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎; field 表示列名 datatype 表示列的类型 character set 字符集&#xff0c;如果没有指定字符集&#xff…

深入解读 Elasticsearch 磁盘水位设置

本文将带你通过查看 Elasticsearch 源码来了解磁盘使用阈值在达到每个阶段的处理情况。 跳转文章末尾获取答案 环境 本文使用 Macos 系统测试&#xff0c;512M 的磁盘&#xff0c;目前剩余空间还有 60G 左右&#xff0c;所以按照 Elasticsearch 的设定&#xff0c;ES 中分片应…

CatBoost高级教程:分布式训练与大规模数据处理

导言 CatBoost是一种高效的梯度提升算法&#xff0c;可以处理大规模数据集并支持分布式训练。在实际应用中&#xff0c;处理大规模数据集时&#xff0c;分布式训练可以大大加快模型训练的速度&#xff0c;并提高训练效果。本教程将详细介绍如何在Python中使用CatBoost进行分布…

解决 cx-programmer 梯形图中繁体中文乱码问题

我的情况 cx-programmer9.5是繁体版&#xff0c;梯形图编辑区中打出的字体&#xff0c;简体繁体 都是乱码。 但是状态栏显示注解是正常的繁体。 原因 简体和繁体的编码不一样。繁体的BIG5和简体的GB2312不能互转&#xff0c;A编码的用B解码也是乱码。 解决 把系统字体调整为繁…

picGo 图床配置 - gitee

记录一下&#xff0c;怕忘记了 PicGo 下载安装 官网下载地址 从下面随意复制一个链接到浏览器上打开 我下载的是.exe版本的&#xff0c;你可以选择自己想安装的方式 安装完之后打开就是这个样子 配置PicGo 首先安装这个插件 安装完之后会有一个gitee&#xff0c;点击&#xff…

Java性能优化秘籍:内存管理、垃圾回收与性能调优

Java性能优化&#xff1a;内存管理、垃圾回收和性能调优 作为一名软件研发专家&#xff0c;深入理解Java性能优化的重要性不言而喻。本文将围绕Java性能优化的核心主题——内存管理、垃圾回收和性能调优&#xff0c;与大家分享一些实用的技巧和案例。 1. 内存管理 内存管理是…

STM32CubeMX学习笔记18——FSMC(TFT-LCD屏触摸)

1.触摸屏简介 目前最常用的触摸屏有两种&#xff1a;电阻式触摸屏和电容式触摸屏 1.1 电阻式触摸屏 电阻式的触摸屏结构如下图示&#xff0c;它主要由表面硬涂层、两个ITO层、间隔点以及玻璃底层构成&#xff0c;这些结构层都是透明的&#xff0c;整个触摸屏覆盖在液晶面板上…

集合框架(一)Set系列集合

Set<E>是一个接口 特点 无序&#xff1a;添加数据的顺序和获取出的数据顺序不一致&#xff1b;不重复&#xff0c;无索引 注意&#xff1a;Set要用到的常用方法&#xff0c;基本上就是collection提供的!自己几乎没有额外新增一些常用功能! HashSet集合的底层原理 前置知…

[Mac软件]VMware Fusion Pro for Mac 13.5.1 Build 23298085 VM虚拟机中文版

黑果魏叔网站VMware Fusion Pro – 无需重启即可在 Mac 上运行 Windows、Linux 和其他系统的虚拟化软件。最新版本完全支持 Windows 10、macOS Mojave 和最新的 Mac&#xff0c;包括 18 核 iMac Pro 和配备 6 核 Intel i9 CPU 的 MacBook Pro。VMware Fusion 支持 DirectX 10.1…

Mybatis 如何引用其他文件中的sql 片段

假设: 有一些通用的sql,在整个项目中都有可能使用的到, 但是我不太想定义java接口,结合着java逻辑来实现功能, 又或者,在每一处的mapper.xml内都定义sql片段, 那么如果需要调整sql,我就需要调整好多处相同的代码. 如何后期维护方便,使用起来又简单呢? 想法: 单独创建一个mapp…

RocketMQ学习笔记二

课程来源&#xff1a;马士兵教育官网 - IT职业领路人 马士兵初级版&#xff08;4.5h&#xff09; 本课程讲解的是RocketMQ4.8版本。 消息中间件的使用场景&#xff1f; 异步与解耦&#xff1b;流量削峰&#xff1b;数据分发。 RocketMQ的角色 RocketMQ的基本概念 RocketMQ…