1
C语言中有一批被保留的有名字的符号,它们被称为关键字,如上篇代码写到的int main 都是关键字。所以,由此而得,关键字有自己特别的含义。
数据类型关键字(12个): char、short、int、long、signed、unsigned、float、double、struct、union、enum、void 控制语句关键字 (12 个): 1、循环控制(5个) for、do、while、break、continue 2、条件语句(3个) if、else、goto 3、开关语句(3个) switch、case、default 4、返回语句(1个) return 存储类型关键字( 5 个) auto、extern、register、static、typedef 其他关键字( 3 个) const、sizeof、volatile 以上是C语言中的所有关键字,每个都有对应的含义以及具体的功能,不进行过多阐述。
那么关键字也有一定的特点,如
· 关键字不能自己创建
· 程序员定义标识符的时候不能和关键字重名
2
接下来引入字符的概念,字符是很好理解的。
百科对字符的解释是这样的:
字符指类字形单位或符号,包括字母、数字、运算符号、标点符号和其他符号,以及一些功能性符号。
所以能打印出来的都可以认为是字符。
但是可能别人认为字符奇形怪状的,不如用特定的数字来规定某个特定的字符。于是有了ASCII编码的诞生,ASCII是翻译过来就是”美国信息交换标准代码“。
那么来一览ASCII编码。
Dec是十进制的意思,Hex是十六进制的意思,Oct是八进制的意思。
可以看到,在十进制的情况下,最多有127个字符,而需要记住应该是48-57是数字字符,65到90是大写字母字符,97到122对应的是小写字母字符,不难发现大小写相差32。
而1-31是打印不出来的,32以后的可以打印出来。
让我们结合代码进行直观的理解。
#include <stdio.h>
int main()
{
int i = 0;
for (i = 32; i <= 127; i++)
{
printf("%c ", i);
}
return 0;
}
这里用到了for循环,是后面的内容,代码的意思是打印从32到127的字符,%c 被称为占位符,打印不同的数据类型需要不同的占位符,如整型用%d,无符号数用%u等等。
可以注意,%c后面有一个空格,所以打印出来没有那么紧凑。
3
既然有字符的说法,那么就有连续的字符,被称为字符串。
打印字符是%c,那字符串呢?是%s。
如图
那么就有疑问了,用%s打印一个字符行不行啊?
当然可以,大不了就是字符串只有一个字符嘛。
那么接下来,是结束标志。
什么是结束标志呢?——即是字符串结尾的地方。
有人问了,不对啊,abcdef不是f结尾的吗?
ok这里用代码解释。
我打印这个数组里的字符,注意,用大括号括起来,单引号里的才是这个数组的字符内容。
但是一起打印的还有那一串乱码。
这是因为这个数组没有\0,也就是结束标志。那么这个数组后面是随机值,直到碰到了\0才停止。
而用双引号打印的话,后面是默认带了结束标志的,如图
但我如果这样——初始化一下数组,那么会?
是的,我在方括号里面加了一个10,那么代表这个数组被初始化为内存大小为10个字节的数组,
初始化后,abc被放入数组,其他空间默认为0,所以不会出现乱码。
PS:字节相关内容后面介绍。
4
转义字符,顾名思义,转变了原来意思的字符,如n是一个字母字符,\n是转移字符,是代码换行的意思,所以可以知道,转义字符也有特定的意思。
下面来介绍部分转义字符,上图
\a:会让终端发生警报或者闪烁,或同时发生,这里不方便演示,各位方可自行尝试。
\b:这个字符是退格的意思,如图
很容易认为是删除的意思,但实际上是退格,覆盖后面的内容,与删除略有差异。
\n:换行,很容易理解,打印完了换到下一行的开头。
下面一起介绍 \t \\
不难发现,第5行打印的内容的\t没有了,这是因为\t也是转移字符,得 \t的意思是一个TAB,也就是一个比较大的空格。
那么第六行呢?把\t改成了\\t,打印出了原本第五行我们想要的内容,那么可以知道,\\这个转义字符代表的是\,是为了防止其他字符被转义的。
那么有了\\的基础,相信不难理解\' 和 \"了,无非就是打印单引号和双引号。
如图
接下来就刚才数组的基础,讲解\0
\0在数组里是结束标志,在表里面可以看到NULL和它在同一行,那么NULL和\0是不是有一样的效果呢?如图
哦哟?NULL和\0的结果是一样的,所以\0等价于NULL。
最后讲解一下\ddd \xdd \?这三个
\ddd 表示这个是有1到3个八进制数组成的数,比如\130代表十进制数88,\03代表十进制数3。
\xdd表示这个是由1到2个十六进制数组成的数,比如\x7f代表十进制数127。
那么有人问,为啥十六进制的数才两个啊?
欸你看ASCII表,最大的十进制数是127,转化成十六进制是7f,所以用不着太多。
仍然上图直观的感受一下。
有关进制转化的内容本章暂且不做讲解。
那么现在讲解一下\?,把它放在最后自然有理由,这个其实很容易理解,不过就是打印问好罢了,但是在远古时期,如vs2010版本,比如打印??),是打印不了的,这被称为三字母词,即??)打印出来是],同理??(打印出来是[,但是在vs2013就不能检验了,当然三字母词不是两个问号随便加一个就可以构成三字母词,所以严谨打问号的话,应该是\?的,当然,目前似乎不太需要。
5
C语言中的代码,也就是由语句一条一条构成的,那么语句也分为几类。
·空语句
·表达式语句
·函数调用语句
·复合语句
·控制语句
空语句最好理解,放上去一个分号,也就是一条空语句,所以,C语言的语句是用;结束的。
表达式语句同样好理解,如int a=10;这就是一个表达式语句。
函数调用语句如printf("\d",123);这就是一个函数调用语句。
复合语句如ffor循环里面加个if语句也是一个复合语句。
重点在于控制语句
控制控制,就是控制C语言中代码的走向,生活中做事无非就是三种方式,顺序,选择,循环。
C语言中也是如此,C语言对其进行了细化,分为9种控制语句
条件判断语句,也就是分支语句:if ,switch
循环语句:while ,do while, for
转向语句:continue,goto,break,return
当然,后面会进行专门讲解。
6
注释,无非就是对代码进行一个解释,注释可以体现程序员的素质,为什么这么说呢?
当你写完一段代码后,不对其进行注释,后来别人来解读你这段代码,问你这段代码怎么是这样,然后你也解释不出个所以然,结果就是哦豁,谁都看不懂。
所以注释的必要性是挺大的。
当然,注释使用有两种
一种是//,可以注释单行的代码
另一种是/* */,可以注释一片代码,可这种注释有一定的局限性,不能嵌套使用
所以按需注释。
感谢阅读!