C 语言笔记复盘 2 C 语言的特点
上一篇文章呢,我们介绍了 C 语言的由来。是怎么从机器语言一直转变到 C 语言的。那么这一篇文章我们将会开始的去学习 C 语言的特点。
C 语言的特点
下面呢,我将用一张表来说明 C 语言的优点和缺点。
优点 Pros | 缺点 Cons |
---|---|
C 语言语句简洁紧凑使用方便灵活 | 对语法检查不严格 |
运算符丰富,表达能力强 | 运算符较多,初学者很难掌握 |
C 语言程序可移植性好 | |
生成的目标代码质量高,运行效率高 | |
语言处理能力强 | |
C 语言是一种结构化语言 |
C 语言的约定
上一篇提到 C 语言是一个结构化编程语言,而且它 “类似” 人类的自然语言,但对语法的检查不严格。所以需要程序员之间达成一些约定,好让彼此之间的代码互相看得懂,接下来我们聊聊 C 语言的约定。
标识符 Identifier
标识符是指一个自定义的标识,用于标识数据类型,包括:变量、函数等。在 C 语言中(或者对于之后面对的每一门语言),对一个数据定义标识符时,应该做到见字知意,一个标识符应该是使用英语写出其所对应的现实世界的名词。并且使用小驼峰命名。比如:对一条公路上汽车的计数器的变量标识符命名为 carsCounter
。
关键字
C 语言中有 32 个关键字是我们在定义标识符时不能使用的。这些关键字是保留给 C 语言做某些操作所需要用到的,他们的分类如下表所示:
分类(Categories) | 关键字(Keywords) |
---|---|
数据类型 | char, double, enum, float, int, long, short, signed, unsigned, struct, union, void |
控制语句 | break, continue, case, do, default, else, for, goto, if, return, switch, while |
存储类型 | auto, extern, register, static |
其他 | const, sizeof, typedef, violate |
用户自定义标识符
包括程序中定义的变量名、数据类型名(使用 typedef 语法)、函数名和符号常量名。一般来说,通常使用有意义的英文单词作为用户自定义标识符。
预定义标识符
通常我们可以使用 C 语言自带的运算符完成基本操作,但是我们还是需要进行某些特定的操作,如获取用户输入及输出。这时候我们就要用到预定义标识符。C 语言提供的大量的头文件和库函数,如我们常用的 printf
, scanf
等,都是引用了 stdio.h
这个头文件中的函数。
C 语言中允许用户自定义标识符与预定义标识符同名,但是这会使原有标识符失去作用,不推荐这样做。
分隔符
在 C 语言中,我们需要使用分隔符,如:` 空格和
,` 来构成完整的一个语句。比如说
int a, b, c; |
以上语句的完整结构是:关键字 int
+ 标识符 a, b, c
+ 分隔符 ,
+ 语句结束 ;
C 语言的语法成分
C 语言的语法成分包含了常量、变量、运算符、表达式、语句、函数定义与调用、输入与输出。
常量
整形常量如 2
;实型常量如 2.0
;字符型常量如 '2'
;字符串常量如 "C Programming"
。
变量
变量的定义形式为:类型名 变量名;
如:int a, b, c;
。
运算符
C 语言有多达 34 种运算符。其中操作 1 个数据对象的称为单目运算符;操作 2 个数据对象的称为双目运算符,如 2 + 2
、a = 10
,操作三个数据对象的称为三目运算符,如 a > b ? a : b
表达式
由运算符、变量、常量、函数组合而成的有意义的使之成为表达式。表达式中可以包含多种数据类型的运算符,运算符有优先级。例如,表达式 b * b - 4 * a * c > 0
种,由于算术运算符优先于关系运算,所以先计算 b * b - 4 * a * c
,再做关系比较运算 >
语句
C 语言中,语句是最基本的执行单位,以分号 ;
结尾。
函数的定义与调用
对于一些代码,我们可能会重复的去写,我们可以将这些重复的功能提取成函数。函数就是完成特定功能的小模块。一般情况下,C 语言程序包含多个函数。对于初学者,最常见的函数应该是:printf
、scanf
、puts
、gets
等。
一般情况下,函数拥有零个或多个参数,并拥有零个或一个返回值。我们可以用 return
语句来讲函数中处理好的值进行返回。
C 语言的入口函数 int main()
就是一个函数,在执行完 main 函数后,程序会返回 0 (return 0;
),说明程序顺利执行。非 0 值代表程序执行过程中出现问题。
输入输出
C 语言是没有提供用于数据输入与输出的语句,所有的输入与输出都是通过系统提供的有关函数(如 scanf()
和 printf()
)函数来实现的