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

"本文详细介绍了C语言中的字符串概念,包括字符串字面值和结束标志'',转义字符的作用及常见用例,以及注释的两种风格及其在代码中的重要性。通过实例演示,帮助读者理解字符串长度计算和转义字符在实际应用中的作用。"
摘要由CSDN通过智能技术生成

一.字符串

什么是字符串呢?
“hello world!”——这就是一个字符串。
这种由双引号(Double Quote)引起来的一串字符称为字符串字面值(String Literal),或者简称字符串。
那现在有一个问题,这个字符串里有几个字符呢?
是只有’h’, ‘e’, ‘l’, ‘l’, ‘o’,’ ’ ', ‘w’ , ‘o’, ‘r’, ‘d’, ‘!’. 这12字符吗?
不是的!!!
为什么呢?因为在C语言中,字符串的末尾都有一个 '\0’这样的转义字符作为它的结束标志。在计算字符串长度的时候 \0 是结束标志,不算作字符串内容。
来看一段代码:

#include <stdio.h>
//下面代码,打印结果是什么?为什么?(突出'\0'的重要性)
int main()
{
	char arr1[] = "hello";
	char arr2[] = { 'h','e','l','l','o'};
	char arr3[] = { 'h','e','l','l','o','\0'};
	printf("%s\n", arr1);
	printf("%s\n", arr2);
	printf("%s\n", arr3);
	return 0;
}

看运行结果:
在这里插入图片描述
这就很好地证明了’\0’是字符串的结束标志,隐藏在字符串结尾,%s打印字符串遇到’\0’结束。

二.转义字符

上面我们提到了字符串的结束标志“\0’是一个转义字符,那么什么是转义字符呢?
定义:转义字符是很多程序语言、数据格式和通信协议的形式文法的一部分。对于一个给定的字母表,一个转义字符的目的是开始一个字符序列,使得转义字符开头的该字符序列具有不同于该字符序列单独出现时的语义。因此转义字符开头的字符序列被叫做转义序列。
举个例子:假设我们要在屏幕上打印一个目录: c:\code\test.c
我们写了这样一个代码:

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

然后运行它:
在这里插入图片描述
为什么打印出来是这样呢?\n, \t这些东西为什么没有打印出来呢?
原因是这里的\n, \t就是我们所说的转义字符。
所有的转义字符和所对应的意义:
在这里插入图片描述
注意:

  1. 区分,斜杠:“/” 与 反斜杠:“\” ,此处不可互换
  2. \xhh 十六进制转义不限制字符个数 ‘\x000000000000F’ == ‘\xF’

下面做一些练习,帮助大家理解一些常见的转义字符:
问题1:在屏幕上打印一个单引号’,怎么做?
问题2:在屏幕上打印一个字符串,字符串的内容是一个双引号“,怎么做?

 printf("%c\n", ''');
 printf("%s\n", """);

这样能直接打印出来吗?
我们运行一下:
在这里插入图片描述
发生错误了,为什么呢?
因为,当我们这样 printf(“%c\n”, ’ ’ '); 去打印字符 ’ 时,第一个单引号和第二个单引号结合了,这样第三个单引号就落单了,所以出现错误了。
同样的道理,printf(“%s\n”, " " ");打印一个双引号,前两个也自动结合了。
为了解决这种问题,我们就用到了转义字符,顾名思义,转义字符就是转变了原来的意思。
所以,我们在它们前面都加上一个反斜杠’',*‘用于表示字符常量’,"用于表示一个字符串内部的双引号*,这样,就可以成功打印了。

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

在这里插入图片描述
再讲两个比较重要的:

  1. \ddd ,ddd表示1~3个八进制的数字。 如: \130 X
  2. \xdd ,dd表示2个十六进制数字。 如: \x30 0
    举个例子:
int main()
{
	printf("%c\n", '\130');
	printf("%c\n", '\x30');
	return 0;
}

结果应该是什么呢?
\130是X,\x30是0.
在这里插入图片描述

三.注释

注释是用来干啥滴?

  1. 代码中有不需要的代码可以直接删除,也可以注释掉
  2. 代码中有些代码比较难懂,可以加一下注释文字
    怎样注释:
    注释有两种风格:
    1.C语言风格的注释 / xxxxxx /
    缺陷:不能嵌套注释
    2.C++风格的注释 //xxxxxxxx
    可以注释一行也可以注释多行

    举个例子:
#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; }

被注释掉的代码,要么是不需要的带码,要么是对代码的解释,它们是不会参与程序的运行的。

最后,我们再来做一道相关的笔试题:

#include <stdio.h>
int main()
{
    printf("%d\n", strlen("abcdef"));
    // \62被解析成一个转义字符
    printf("%d\n", strlen("c:\test\628\test.c"));
    return 0; }

问题是:程序输出什么?
结果是6,14.
首先给大家解释一下strlen()是什么东西。
strlen是C语言内置的一个求字符串长度的库函数,另外再提一下在计算字符串长度的时候 \0 是结束标志,不算作字符串内容
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YIN_尹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值