C语言字符相关内容与单双引号区别(附VS调试流程)【挑战200天PAT甲级(3)】2021-07-06

一、字符

1.什么是字符串
在这里插入图片描述
2.字符串拥有结束标志

1.先来将一个字符串存入数组并打印
例:

int main()
{
	char arr1[] = "abc";
	//字符串存入数组
	printf("%s\n", arr1);
	return 0;
}

运行结果:
在这里插入图片描述
2.要是将{‘a’,‘b’,‘c’}存进数组再打印呢?为什么会出现这种情况?

int main()
{
	char arr1[] = "abc";//数组
	char arr2[] = { 'a','b','c' };
	printf("%s\n", arr1);
	//%s是以字符串输出
	printf("%s\n", arr2);
	return 0;
}

运行结果:
在这里插入图片描述
3.进行调试:
在这里插入图片描述
在这里插入图片描述
通过监视窗口发现数组arr1和arr2的区别是——arr1的值后面多了一个0(‘\0’)

那我们为arr2的后面也加上一个0(‘\0’)
运行结果:
在这里插入图片描述
这是为什么呢?

arr1打印的是使用双引号引起来的字符串,而arr2打印的是单引号引起来的几个字符而非字符串(本文补充了双引号单引号引用字符的区别,见文章末),为arr2添加了字符串的结束标志才能正确打印abc。
字符串有个隐藏的/0,是字符串结束的标志,/0字符为0(/0也是转义字符),如果字符串之后没有‘/0’就会打印随机值。/0的值为0。

*注:‘/0’在字符串中占1字节

4.字符的对应值与ASCII表
在这里插入图片描述
ASCII常识:
相邻大写字母之差是1,同字母大小写差是32

3.strlen()计算字符长度
1.利用strlen()计算字符长度需要“打个招呼”,需要头文件

#include<string.h>

2.我们来计算一下刚刚的arr1和arr2的长度

#include<stdio.h>
#include<string.h>//这部分代码特意加上了使用该函数的头文件
int main()
{
	char arr1[] = "abc";
	char arr2[] = { 'a','b','c'};
	printf("%d\n", strlen(arr1));
	//%d以十进制整数输出
	printf("%d\n", strlen(arr2));
	return 0;
}

运行结果:

在这里插入图片描述
计算字符串长度是从字符串开始,到’\0’结束,所有字符的个数,不包括’\0’本身。所以arr1的长度为3。
而arr2没有结束标志,它的长度不固定,所以输出的长度是随机的一个值。

*
尽管’\0’不算入字符串的长度,但它占用一个字节的存储空间。
‘0’是一个字符,与’\0’是完全不同的概念。

4.转义字符
在这里插入图片描述
例:
在这里插入图片描述
答:13。

c: - - 2字符没有问题
\t - - 转义字符,字符字符就是一个字符所以是1
est - - 3字符
 \t - - 1字符    
est.c - - 5字符

那么\32为什么也是一个字符呢?

\32 - - \32是上面\ddd的形式

在这里插入图片描述

所以3和2是两个八进制数字,32是十进制转来的八进制数字,要再把32变回十进制。
32转十进制→3 * 8 ^ 1 + 2 * 8 ^ 0=26再查ascii表,对应→,所以是一个字符。
 
2+1+3+1+1+5=15

5.注释
1.注释的作用:以后维护或查看程序时候,知道这段代码是干什么用的。

2.怎么注释:

在这里插入图片描述
这样注释是不可以的:
在这里插入图片描述
/ * 以遇到的第一个 * /为准作为注释

补充*:

1.单引号和双引号的细节区别

单引号在字符常量时使用,表示单个字符。当在单引号中出现两个及以上字符时或没有字符时,编译出错。

例:

char c = ‘aA’; // 编译出错,单引号只能是一个字符

char c = ‘’; // 单引号中间没有任何字符时,编译出错

双引号在表示字符串常量时使用,可以表示0到多个字符组成的字符串。

char s1[] = “a”;

char s2[] = “a1A”;

char s3[] = “”; // 双引号中间可以没有任何字符,表示空字符串

单引号和双引号如何在程序中表示和输出自身呢?

和其它特殊字符一样,使用转义方式。

char c1 = ‘’’ ; // 单引号字符

char c2 = ‘"’; // 双引号字符

同理,字符串中输出引号也是一样,直接使用转义方式表示。

总结:
1.字符常量使用单引号,字符串常量使用双引号表示
2.两者均支持转义字符表示。

‘A’ 表示单个字符大写字母A,占用1个字节空间
“A” 表示字符串,该字符串只有1个大写字母A组成,占用2个字节空间,每个字符串末尾自动会加上一个空字符 ‘\0’
空字符常量使用转义符号 '\0’表示,空白字符串使用双引号表示 “”

2.调试流程

Step1:
Ctrl+F10
在这里插入图片描述
Step2:
调试—>窗口—>监视—>监视
在这里插入图片描述
Step3:

监视中输入变量名
在这里插入图片描述
Step4:
F10一步步运行观察
在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值