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

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. 写代码的时候写注释,是利人利己的。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值