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

news/2024/11/20 6:20:40/

文章目录

  • 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" ;//用双引号括起来的字符,字符串末尾自动添加 \0char 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.ppmy.cn/news/513590.html

相关文章

AI 绘画工具 Stable Diffusion 本地安装使用

最近要用到 AI 绘画&#xff0c;所以研究了下目前市面上的 AI 绘画工具&#xff0c;真可谓是琳琅满目&#xff0c;但主流的还是 Stable diffusion 和 Midjourney 两大阵营。 Midjourney 不多说&#xff0c;开箱即用&#xff0c;对新手非常友好&#xff0c;但不免费&#xff0c…

RISCV-semi host原理以及实践

嵌入式裸机调试需要在有限资源的目标硬件上尽可能挖掘更多的信息&#xff0c;比如打印寄存器等等&#xff0c;但是即便看似很简单的串口打印&#xff0c;在有的情况下也是奢望&#xff0c;针对这种情况&#xff0c;能够有效利用主机资源协同调试的semi-host&#xff08;半主机&…

依靠自我

必读网&#xff08;http://www.beduu.com&#xff09;整理 依靠自我 我们需要爱默生式的思想家 当所有的编译工作都完成之后&#xff0c;我突然发现自己在编译过程中经常出现的“为什么要编译爱默生的文章”的疑问都变得多余了&#xff0c;也就是说&#xff0c;我突然认为&…

华为魔术2手机拆机图解_荣耀Magic2手机内部做工如何?荣耀Magic2手机拆机

荣耀Magic2手机内部做工如何&#xff1f;荣耀Magic 2手机搭载的是麒麟970处理器&#xff0c;售价3799元起&#xff0c;这款手机的内部做工究竟如何呢&#xff1f;接下来的文章中小编将会带来这款手机的拆机全过程图解评测&#xff0c; 荣耀Magic2手机拆机 1、首先关机&#xff…

机器学习期末复习 集成学习

1.集成学习的一般结构&#xff1f; &#xff08;1&#xff09;产生一组个体学习器 &#xff08;2&#xff09;用某些策略将个体学习器结合 2.&#xff08;判断&#xff09;集成学习主要分为并行算法和串行算法。其中随机森林属于串行算法&#xff0c;即每一颗树的学习受其他树…

随机森林算法

文章目录 1. 随机森林原理1.1 集成学习1.2 Bagging算法1.3 随机森林算法 2. 随机森林算法步骤3. 随机森林特点4. 随机森林的Python应用4.1 RandomForestClassifier随机森林分类4.2 RandomForestRegressor随机森林回归 5. 源码仓库地址 1. 随机森林原理 1.1 集成学习 集成学习…

模糊测试基本介绍

模糊测试基本介绍 覆盖率指引的模糊测试方法获得覆盖率的四种追踪方式1&#xff1a; 使用编译器向基本块边缘插桩&#xff0c;可以准确地插桩并易于优化&#xff0c;但需要源码已知。静态二进制重写&#xff0c;不需要源码&#xff0c;仍在研究&#xff0c;因为静态代码插桩准…