行业知识
初识C语言—字符串、转义字符、注释
字符串
���符串就是一串字符
()用英文双引号括起来的字符
int main(){ "dasgfhjkasg\n" "hello world!" return 0;} 字符串的结束标志是\0这个转义字符
()如何证明呢?
int main(){ //字符数组 - 数组是一组相同类型的元素 char arr[] = "hello";//方括号内不写数组长度时,会根据后面元素来初始化 return 0;} 运行时查看调试监视arr中可以看到
数组的第六位存放'结束标志如何理解
'
所以\0是字符串结束的标志,字符串结尾都隐藏了一个\0
#includeint main(){ char arr1[]="abc"; char arr2[] = {'a','b','c'}; printf("%s\n", arr1); printf("%s\n", arr2); return 0;} //arr1 中有四个元素 - 多一个abcabc烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫贴-␦→//arr2 中有三个元素
运行监视
运行结果
我们来看空间内容
| arr1 | abc | arr2 |
| abc | ||
arr2打印完成后后面空间是未知的,没有停止符号,所以会继续打印乱码
测试放入\0
int len = strlen("abc");printf("%d",len); 结果
3
再次验证一下
#include
#include#include int main(){ char arr1[] = "abc"; char arr2[] = { 'a','b','c' }; printf("%d\n", strlen(arr1)); printf("%d\n", strlen(arr2)); return 0;} 342//随机值,直到找到#include#include int main(){ char arr1[] = "abc"; char arr2[] = { 'a','b','c','33
'}; printf("%d\n", strlen(arr1)); printf("%d\n", strlen(arr2)); return 0;}才会停下 输出结果
转义字符
出现警告strlen未定义 - 出现原因,没有引用头文件
需要引用
#includeint main(){ printf("C:\test\test.c"); return 0;} 字符串的结束标志\0仅仅是结束标志!!!
当我们求长度时并不计算在内!!!
C: est est.c
运行结果
int main(){ printf("%c",'''); return 0;} 意料之中,因为没有终止符,所以字符串长度为随机值
int main(){ printf("%c",'\''); return 0;} 运行结果
'
完美!
printf("%d",100);printf("%c",'a');printf("%s","abc"); #includeint main(){ printf("C:\test\test.c"); return 0;} 打印结果
C:\test\test.c
转义字符:转变了原来的意思
三字母词已经不支持 — 比如 ??) 会变成 ]
例如
int main(){ printf("%c\n",'0'); return 0;} 报错是因为单引号,所以我们需要转义一下
X //——ASCII码值为88
输出结果
int main(){ printf("%c\n",'\X30'); return 0;} printf在打印数据的时候可以指定打印的格式
0 //’0‘的ASCI码值为48,十六进制为30
如何不让斜杠被认为是转义字符
\t会被转义成水平制表符,我们可以用斜杠转义斜杠来解决上面的问题
面试题
打印结果
#includeint main(){ //问题1:在屏幕上打一个单引号,怎么做 //问题2:在屏幕上打一个字符串,字符串的内容是一个双引号”,怎么做 printf("%c\n", '\‘'); printf("%s\n", "\""); return 0;} 成功!
\转义字符 意义 ASCII码值(十进制) \a 响铃(BEL) 007 \b 退格(BS) ,将当前位置移到前一列 008 \f 换页(FF),将当前位置移到下页开头 012 \n 换行(LF) ,将当前位置移到下一行开头 010 \r 回车(CR) ,将当前位置移到本行开头 013 \t 水平制表(HT) (跳到下一个TAB位置) 009 \v 垂直制表(VT) 011 \ 代表一个反斜线字符’’’ 092 ’ 代表一个单引号(撇号)字符 039 " 代表一个双引号字符 034 ? 代表一个问号 063 \0 空字符(NUL) 000 \ddd 1到3位八进制数所代表的任意字符 三位八进制 \xhh 十六进制所代表的任意字符 十六进制
\ddd 1到3位八进制数所代表的任意字符 三位八进制
//程序输出什么?#includeint main(){ printf("%d\n",strlen("abcedf")); printf("%d\n",strlen("C:\test8\test.c")); return 0;} 输出结果
14//转义字符算一个字符
八进制130转化为十进制为88
键盘上可以打出各种字符
各种字符是如何存储的
A — 65
B — 66
a — 97
ASCII码表:每一个字符都有一个值:ASCII值
\xhh 十六进制所代表的任意字符 十六进制
注释
输出结果
//这种注释风格是C++注释风格/*这种注释风格是C语言的注释风格*///这种最为常用,C语言注释不支持嵌套注释,所以C++风格更常用
这道题不难,根据上面的内容可以直接给出答案
笔试题:
答案为
魔鬼细节
/328
我们很容易想到上面的 — \ddd 1到3位八进制数所代表的任意字符 三位八进制
但是八进制数怎么能出现8呢朋友
用来解释复杂代码
上一篇:诊断策略服务器在哪里?