【初识C语言】字符串+转义字符+注释

news2024/9/22 13:24:04

文章目录

  • 1. 字符串
  • 2. 转义字符
    • 转义字符表
    • 常见转义字符
  • 3. 注释

1. 字符串

“hello world.\n”

  • 上面这种由双引号引起的一串字符就被称为字符串

字符串的存储

  • C 语言当中没有字符串类型,如果想要将字符串存储起来的话就需要用到字符串数组
#include <stdio.h>

int main()
{
	char arr [] =  "abcdef" ;//7字节
	//使用字符串数组将 abcdef 这串字符存储起来

	return 0;
}

字符串结束标志

  • 字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串内容。
  • 上面那段代码中,看起来只有 abcdef 这6个字符,实际上在字符串末尾还藏着个 \0 占一个字节的坑位。
#include <stdio.h>

int main()
{
	char arr[] = {'a','b','c','d','e','f'};
	//这种情况下 C 语言不会自动添加 \0 进去作为结束标志,所以这串字符占6字节
	return 0;
}

字符串没有 \0 的后果

在这里插入图片描述

  • 在正常自带 \0 的 arr1 字符串中,可以正确的将字符串打印出来。
  • 而在不带结束标志 \0 的 arr2 字符串中,只有在遇到 \0 的时候才算打印完成,所以在打印 arr2 的时候会在 f 后面一直找随机数,直到刚好随机到 \0 的时候此时才会被判断成该字符串结束,然后将其打印出来。
#include <stdio.h>

int main()
{
	char arr1 [] =  "abcdef" ;//用双引号括起来的字符,字符串末尾自动添加 \0
	char arr2 [] = { 'a','b','c','d','e','f' };//这种情况下C语言不会自动添加 \0 进去作为结束标志,所以这串字符占6字节
	char arr3 [] = { 'a','b','c','d','e','f','\0' };//在 arr2 的基础上主动添加一个 \0 也是一个正常的字符串

	printf("%s\n", arr1);
	printf("%s\n", arr2);
	printf("%s\n", arr3);

	return 0;
}

在这里插入图片描述

2. 转义字符

转义字符

  • 转变原来字符的意思

举个例子

在这里插入图片描述

  • 此时转义字符 \ 就将一个普通的字符 n 转换成一个换行符了。

转义字符表

转义字符释义
\?在书写连续多个问号时使用,防止他们被解析成三字母词
\’用于表示字符常量 ’
\"用于表示一个字符串内部的双引号
\\用于表示一个反斜杠,防止它被解释为一个转义序列符
\a警告字符,蜂鸣
\b退格符
\f进纸符
\n换行
\r回车
\t水平制表符
\v垂直制表符
\dddddd 表示 1-3 个八进制的数字。如:\130 X
\xdddd 表示 2 个十六进制的数字。如:\x30 0

常见转义字符

1. 转义字符 “ \? ”

  • 在书写连续多个问号时使用,防止他们被解析成三字母词。
    • 三字母词:早起某些编译器底下,在字符串中遇到多个问号+括号时可能结果和想象有所出入。
??) 会转变成 ]
??( 会转变成 [
  • 此时加上一个转义字符 \ 让 ? 就是一个单纯的小问号。

2. 转义字符 “ \’ ”

  • 用于表示字符常量 ’
#include <stdio.h>

int main()
{
	printf("%c\n", ''');
	//用两个单引号框柱一个单引号并不能准确打印出一个单引号
	//第二个单引号会先和第一个单引号结合,第三个就无人认领

	printf("%c", '\'');//正确打印出一个 ' (单引号)

	return 0;
}

3. 转义字符 “ \" ”

  • 和 \’ 类似,就是为了打印一个双引号 ” 出来。
//打印一个双引号

#include <stdio.h>

int main()
{
	printf("""); //第二个双引号先与第一个结合,第三个又落单了

	printf("\"");//正确打印一个双引号

	return 0;
}

4. 转义字符 “ \\ ”

  • 用于表示一个反斜杠,防止它被解释为一个转义序列符。
//打印一个反斜杠 \

#include <stdio.h>

int main()
{
	printf("abcd\\ef" );//让反斜杠单纯的就是一个反斜杠

	return 0;
}

5. 转义字符 “ \b ”

  • 退格符
//退格符://有几个 \b 就从右往左退几格,并将该位置字符删除

#include <stdio.h>

int main()
{
	printf("abcdef\b\b");
	printf("\nabcdef\b\b\b");

	return 0;
}

在这里插入图片描述

6. 转义字符 “ \n ”

  • 换行,用的最多了。
#include <stdio.h>
 
int main()
{
	printf("abc\ndef");//将会打印出abc与def在二行中

	return 0;
}

7. 转义字符 “ \t ”

  • 水平制表符,功能相当于键盘上的 TAB 键。

在这里插入图片描述

8. 转义字符 “ \ddd ”

  • ddd 表示 1-3 个八进制的数字,将三个八进制的数转义成对应的十进制。如:\130 X
//转义字符 \ddd

#include <stdio.h>

int main()
{
	printf("%c\n", '\130');
	//先将八进制的130转成对应的十进制 88,再打印出对应ASCII表中字符

	return 0;
}

在这里插入图片描述

9. 转义字符 “ \xdd ”

  • dd 表示 2 个十六进制的数字,将两个人十六进制的数转义成对应十进制。如:\x30 0
//转义字符 \xdd
#include <stdio.h>

int main()
{
	printf("%c\n", '\x30');
	//将十六进制的 30 转成对应的十进制数 48,再打印出对应ASCII表中字符

	return 0;
}

在这里插入图片描述

3. 注释

  1. 代码中有不需要的代码可以直接删除,也可以注释掉。
  2. 代码中有些代码比较难懂,可以加一下注释文字。
#include <stdio.h>

int Add(int x, int y)
{
    return x+y;
}

/*C语言风格注释
int Sub(int x, int y)
{
    return x-y;
}
*/

int main()
{
    //C++注释风格
    //int a = 10;
    //调用Add函数,完成加法

    printf("%d\n", Add(1, 2));
    
    return 0;
    
}

注释风格

  • C语言风格的注释 /* xxxxxx */
    • 缺陷:不能嵌套注释
  • C++风格的注释 //xxxxxxxx
    • 可以注释一行也可以注释多行

务必养成写注释的习惯

  1. 注释可以梳理代码;
  2. 对复杂的代码进行解释;
  3. 写代码的时候写注释,是利人利己的。

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

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

相关文章

Excel VBA 编程入门

Visual Basic for Applications&#xff08;VBA&#xff09;是一种用于 Microsoft Office 套件中的编程语言&#xff0c;它可以帮助您自动化重复性任务、定制应用程序以及增强工作效率。本文将向您介绍 Excel VBA 编程的基础知识&#xff0c;并通过示例帮助您入门。 1、启用“开…

融云WICC2023:成为「卷王」的路上,如何更好借力 AIGC

近期&#xff0c;“融云 WICC2023 泛娱乐出海嘉年华”在广州成功举办&#xff0c;行业多方力量与数百位开发者汇聚一堂&#xff0c;共同探讨出海人布局全球的突围之道。关注【融云全球互联网通信云】了解更多 在嘉年华的圆桌会议环节&#xff0c;白鲸出海创始人&#xff06;CE…

Axure教程—计数器

本文将教大家如何用AXURE制作计数器&#xff08;商品购件数的交互设计&#xff09; 一、效果 预览地址&#xff1a;https://uf9ie1.axshare.com 二、功能 1、用户点击“”号时数值加1 2、用户点击“-”号时数值减1 三、制作 数值 拖入一个矩形组件&#xff0c;其大小设置为164…

个人一年工作情况总结报告

个人一年工作情况总结报告篇1 转眼间又到了年终岁尾&#xff0c;这一年就要在很充实忙碌的工作中过去了。在这一年里&#xff0c;我收获了很多也积累了不少的工作经验。同时在两位领导和各位主管的帮助与支持下&#xff0c;我很好的完成了本职工作。作为一名办公室文员&#xf…

云计算成本大揭秘:硬件、研发、电力等各项成本都在这里!

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 云计算作为一种技术和商业模式&#xff0c;已经深深地影响了全球的IT行业和各种商业运营。云服务商的主要模式以订阅为基础&#xff0c;一旦应用程序和工作负载移动到云上&#xff0c;它们通常会停留在那里&#xff0c;订阅…

js blob 文件上传

js blob 文件上传 js中的文件处理和文件上传掌握得更扎实&#xff0c;有更深入的理解&#xff0c;底层原理 ps.项目中使用插件上传 filereadermime类型筛选单文件的2种处理方案多文件&文件上传进度管控 Ajax文件上传时&#xff1a;Formdata、File、Blob的关系-腾讯云开发者…

基于Java端游账号销售管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

C语言 --- 文件操作(万字详解)

文章目录 前言&#x1f31f;一、为什么使用文件&#x1f31f;二、什么是文件&#x1f30f;2.1程序文件&#xff1a;&#x1f30f;2.2数据文件&#xff1a;&#x1f30f;2.3文件名&#xff1a; &#x1f31f;三、文件的打开和关闭&#x1f30f;3.1文件指针&#xff1a;&#x1f…

TDEngine 调优 - 高速查询及插入

TDEngine 调优 - 高速查询及插入 一、基本参数二、TDEngine大数据核心2.1 vnode分片2.1.1 表分布不均匀2.1.2 vnode分布不均匀2.2 时间段分区 三、数据库性能优化3.1 数据文件3.1.1 maxrows 和 minrows3.1.2 数据的保留策略duration\days 3.2 磁盘IO - vgroups3.3 性能优化实战…

「网络编程」第二讲:网络编程socket套接字(一)

「前言」文章是关于网络编程的socket套接字方面的&#xff0c;下面开始讲解&#xff01; 「归属专栏」网络编程 「笔者」枫叶先生(fy) 「座右铭」前行路上修真我 「枫叶先生有点文青病」 「每篇一句」 春风得意马蹄疾&#xff0c;一日看尽长安花。 ——孟郊《登科后》 目录 一…

这有可能是全网最好的《基于CUDA的GPU并行程序优化实战课程》!预售开启!

大模型一出&#xff0c;各类企业的各类“模型”竞赛般的亮家伙&#xff0c;算力时代抢先到来。2023年4月超算互联网的正式部署&#xff0c;标志着&#xff0c;很快&#xff0c;越来越多的应用都需要巨大的计算资源。 这给传统的计算机体系结构带来了巨大的挑战&#xff0c;计算…

C语言指向结构体的指针(二)

示例 #include <stdio.h> void main(){struct student{char name[10];int age;char *xiaoming;}stu1{"豪哥",23,"zz"},*p;p &stu1;//struct student stu2 {"豪哥",23};printf("结构体指针变量p的姓名是:%s,年龄是:%d,小名是&am…

『手撕 Mybatis 源码』08 - 动态代理 invoke 方法

动态代理 invoke 方法 问题 mapperProxy.findByCondition(1); 是怎么完成的增删改查操作&#xff1f; 当通过 JDK 代理方式生成代理对象后&#xff0c;可以通过代理对象执行代理方法 public class MybatisTest {/*** 问题3&#xff1a;mapperProxy.findByCondition(1); 是怎…

Linux学习之rpm安装软件

包管理器是方便软件安装、卸载&#xff0c;解决软件依赖关系的重要工具。 CentOS、RedHat使用yum包管理器&#xff0c;软件安装包格式为rpm。 Debian、Ubuntu使用apt包管理器&#xff0c;软件安装包格式为deb。 rpm包格式&#xff1a;vim-common-7.4.629-8.el7_9.x86_64.rpm vi…

移植微雪例程-1.54寸双色水墨屏

微雪官网&#xff1a;E-Paper ESP32 Driver Board - Waveshare Wiki 去微雪官网&#xff0c;把墨水屏的例程下下来。 我这个使用的是1.54寸的双色墨水屏。 下载下来之后&#xff0c;然后移植到IDF上面。 移植epd1in54c-demo这个例程。 一.移植前的准备工作: 复制以下内容到…

扩展卡尔曼滤波在目标跟踪中的应用(1)

前面几节相继介绍的不同维度的卡尔曼滤波算法&#xff0c;在线性高斯模型的条件下&#xff0c;具有很好的跟踪效果&#xff0c;当时在实际生活中&#xff0c;不可能所有的运动都呈现一种线性关系&#xff0c;也存在着非线性关系&#xff0c;比如说&#xff1a;飞机的飞行状态&a…

DBA 从业者在行业的变革下 --- 可行性出路

开头还是介绍一下群&#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;在新加的朋友会分到2群&#xff08;共…

玩转ChatGPT:基于Mucloud建立本地知识库

一、写在前面 人们普遍认为GPT有潜力颠覆教育行业&#xff0c;然而这种颠覆会以何种方式呈现呢&#xff1f; 在刘慈欣的科幻世界中&#xff0c;三体人拥有知识遗传的能力&#xff0c;这使得他们的技术迭代成本降至最低。然而&#xff0c;我们人类并未具备这样的特性&#xff…

mysql数据库学习日记第一天

一、简介 数据库&#xff08;DB&#xff09;&#xff1a;存储数据的仓库 数据库管理系统&#xff08;DBMS&#xff09;&#xff1a;数据库管理系统 SQL&#xff1a;操纵关系数据库的一种编程语言&#xff0c;定义一套关于操作关系数据库的一套标准 二、安装教程 到MYSQL官…

拼多多攻势凌厉,中小电商崛起,京东和阿里更换掌门人

日前阿里董事会主席兼CEO都由新的人士担任&#xff0c;此前京东也更换了CEO&#xff0c;两大电商掌门人更换&#xff0c;电商行业引发震动&#xff0c;这不免让人想起另一家正快速崛起的电商拼多多&#xff0c;业界人士指出拼多多的崛起让两大电商闪了腰。 一、拼多多和众多中小…