1.什么是字符串
字符串是由双引号引起来的一串字符成为字符串,例如"Hello"
2.字符数组
(1)字符数组:是由一组型同类型的元素组成的字符数组
//例如
#include <stdio.h>
int main()
{
char arr[] = { 'a','b','c'};
return 0;
}
这里的arr数组就是一串字符数组
(2)字符串的结束符
在字符串中有一个隐藏的结束符,他就是"\0"他是字符串的结束符不是字符串的内容,我们通过一个长的单词拆分给每个数组时可以发现,最后隐藏了一个\0
如下图
通过vs2022的监视窗口看到当代码运行到设定数组的时候,系统自动的根据提供的代码,提供对应的数组个数,但是如果没有监视窗口我们想到的应该是系统分配了3个数组,但是通过监视窗口我们发现系统给分配了4个数组,而其中的"\0"就是字符的结束符
那么如果提供的是3单个的字符那么系统会分配几个数组呢?
如上图我们可以看到当我给出三个单独的字符时,在监视中却没有看到"\0"的出现,那么此时如果执行程序我们会看到什么?
如下图
我们会看到打印出来的数组1abc之后是一些烫,而为什么会出现这种情况呢?
是因为在系统内存中如果我们没有"\0"结束符的出现那么系统会默认认为输入的值还没有完事,在执行的时候系统会继续往后执行,知道找到结束符,才结束运行
如果我们加上结束符的话执行后可以看到执行到abc之后就结束了
在这简单介绍一下%s %c %区别
%s是以字符格式输出字符串
%d是以十进制格式输出
%c是打印出字符
(3)求字符串长度"strlen"
//注意使用strlen求字符串长度的时候需要在程序开头引用"#include<string.h>"这个预处理指令
例如
当没有结束符的时候系统会一直执行知道寻找到结束符,在这里我们可以看到字符结束符的重要!!!
例题
求"adcd" "c\d\329\a\abc" "c\d\322\a\abc"的长度
#include <stdio.h>
#include<string.h>
int main()
{
//根据转义字符的特性求打印出来的字符长度
printf("%d\n", strlen("adcd"));
printf("%d\n", strlen("c\d\329\a\abc"));
printf("%d\n", strlen("c\d\322\a\abc"));
//答案 4 8 7
//\322是转义字符代表八进制也就是 3*8^2+2*8^1+2*8^0最后得出的数值与ASCII表进行对应得出的字符
return 0;
}
结果为
3.转义字符
(1)根据上面的例题,用到了一个知识点叫转义字符,转义字符主要是由"\+字母或者数字"组成的一个有特殊意义字符,不同的搭配会产生不同的效果
在这里主要说一下最后两个转义字符的区别\ddd是一个8进制组成的转义字符例如"\322"它就是由3*8^2+2*8^1+2*8^0最后得出的数值与ASCII表进行对应得出的字符,这三位组成一个字符
"\x32"是一个以16进制组成的字符是以3*16^1+2*16^0组成的字符最后都和ASCII表进行对应得出的字符
(2)ASCII表
4.注释
注释符是由// /**/组成的用来解释代码的作用,方便观看者明白此处代码的作用
//是c++风格
/**/是c语言风格
两中都是注释而且效果一样,只是使用的格式不同"//"风格注释只需要在每行需要注释的前面输入//就可以了"/**/"风格的注释需要在第一行需要注释的开头输入/*然后知道最后输入完内容后输入*/结束注释
//你好
//你好
/*你好你好
你好
你好
你好*/