快速了解C语言

C语言是一种编程语言,和其它语言一样,也定义了自己的语法和词汇。学习C语言,首先要学习C语言的词汇,再学习C语言的语法规则,然后由词汇构成语句,由语句构成源程序,源程序也称为源代码或代码(后面课程提到的源代码或代码,若无特殊说明均指源程序)。
C源程序主要构成元素

C源程序主要构成元素

C源程序主要由语句、函数和注释构成。语句由表达式、变量和常量、运算符、分隔符、关键字构成;函数由函数头和函数体构成;注释由单条注释和多条注释构成。下面对这些元素逐一进行说明。

标识符

C语言的字为字母(大写A~Z或小写a~z)、数字(0~9)和下划线,除此以外不能包含其它字符和符号,C语言字的组合构成了C语言的词汇,在C语言中,词汇被称为标识符,用于给C语言的变量、常量、关键字、函数等命名,C语言要求标识符必须以字母或下划线开头,且在标识符内不能包含空白字符。
例如:
Name,_cell,address,page_number,i,temp,userName

符合C语言标识符的命名规则,是正确的标识符。

下面为不符合命名规则的标识符:
2023_movie,k&c,user name
在上面不合法的标识符中:标识符2023_movie使用数字作为标识符的开头,违反了标识符命名规则;标识符k&c包含了规则之外的字符‘&’;标识符user name包含了空格。

关键字

C语言内部定义了一些标识符被用于特定的用途,这些标识符称为C语言的关键字,编写源程序时,开发者自己命名的标识符不能和C语言关键字重名。
C90标准定义的关键字有32个,C99标准在C90基础上增加了5个关键字,C11标准在C99标准基础上又增加了7个关键字。
C语言常用的关键字见表1-1。
表 1-1 C语言常用关键字表
关键字 说明 关键字 说明
if if语句 else lse语句
int 表示整数类型 float 表示浮点类型
double 表示双精度浮点类型 short 表示短整数类型
char 表示字符类型 long 表示长整数类型
for for循环语句 while
while循环语句
break 循环跳出语句 continue 结束本次循环语句
return 返回语句 do do与while构成循环语句
struct 定义结构体 typdef 定义新的数据类型
const 限定变量内容不能被修改 void 无类型、函数无返回值

变量

变量一词来自于数学,是指值可以变化的量。在编程语言中,变量用来存储数据,存储的数据可以动态变化,即变量的值在程序运行过程中是可以变化的,变量可以被重新赋值,变量的名称是一个标识符。
变量的名称实际是计算机存储单元的地址,变量的值就是该存储单元存储的数据。当我们在源程序中定义变量后,编译器在编译过程中会为定义的变量分配存储单元,分配的存储单元空间与变量存储的数据类型有关。例如:存储int类型的变量在32位操作系统中会被分配4个字节的存储单元空间;存储double类型的变量会被分配8个字节的存储空间。
变量定义示例:
int num = 30;  //定义了整数类型的num变量,变量的初始化值为30
double rate = 0.01;  //定义了double类型的rate变量,变量的初始化值为0.01
定义的变量可以在程序中直接使用,通过变量的名称就可以对变量进行赋值和取值操作。例如:
double rate = 0.01; //定义rate变量
double interest;  //声明interest变量
interest = 5000 * rate; // 5000 乘以rate的计算结果赋值给变量interest

上述代码定义了变量rate,声明了变量interest,在语句interest = 5000 * rate中使用了rate和interest。定义变量和声明变量存在区别,编译器会为定义的变量分配存储空间,但编译器不会为声明的变量分配存储空间,直至声明的变量被赋值时,才会分配存储空间。

常量

常量是变量的一种特例,常量也属于变量,常量被定义后其值不能被修改,因此只能定义常量,不能声明常量。在程序运行过程中,有些值需要保持不变。例如:在基于数学运算的程序中,圆周率是固定不变的值。类似圆周率等在程序运行过程中固定不变的值可以定义为常量,便于使用。C语言定义常量,需要在常量数据类型前面添加const关键字。
例如:
const  double  pi = 3.14;

上面的语句定义了常量pi,其值为3.14,pi在程序运行过程中不能被重新赋值。语句中的3.14是字面常量,字面常量由其表示就可以得知它的值和类型。

运算符

运算符是用于程序执行运算的符号,会针对一个或一个以上操作数进行运算。例如:3+5,其操作数是3和5,运算符是“+”。C语言运算符分为算术、关系、位运算等不同运算种类的运算符。C语言规定了符号“*”为乘法运算符,“/”为除法运算符,“=”为赋值运算符。其它运算符将在后面的课程详细讲述。

表达式

表达式是由变量、常量、字面值、运算符构成的组合。例如:num1+num2、age>18、180/6等。表达式内的变量或常量称为操作数,运算符号称为运算符。在一些复杂的运算中,简单的表达式可以组合为复杂的表达式,其操作数本身可能就是一个表达式。例如(num1+num2)*(x+y),其中的操作数(num1+num2)和(x+y)本身就是表达式,并用运算符*相乘。
表达式的计算结果必须是一个值,如果表达式是一个条件,就会产生逻辑值结果,即真或假。在其他情况下,值通常为计算的结果。

分隔符

在C语言中,分隔符有逗号、空白符、分号和冒号。逗号用来分隔多个变量或函数的参数;分号一般用在语句的结尾,表示一行语句的结束;空白符包括空格、制表符、换行符,通常用来在语句中占位(让代码阅读方便),没有实际作用;分号多用在循环语句中。

语句

语句是由表达式、关键字、标识符、运算符和分隔符构成的组合,多条语句构成了C语言的源程序。
例如语句:
const  double  pi = 3.14;
定义了变量pi,其中const、double是关键字,pi是变量,3.14是字面常量,“=”是赋值运算符,分号放在语句的结尾,表示一条语句的结束。
语句:
interest = 5000 * rate;
字面常量与变量rate乘积的结果赋值给变量interest,其中interest是变量, 5000 * rate表达式,分号放在语句的结尾,表示一条语句的结束。
关于C语言的语句,我们将在后面的课程详细讲述。

函数

函数是能够完成独立功能的代码块(代码块由多条C语句构成),每个函数都有一个名称,函数的名称是标识符,定义的函数可以在其它C语句中被调用,调用者可以把函数看成黑盒,不用考虑函数的内部结构和特性,只需传入参数和接收返回值就可以了。
函数的定义一般包括下面的内容:
“datatype”是函数返回的数据类型,若函数无返回值,可以使用关键字void表示该函数无返回值。“functionname”是函数的名称,函数名称的命名需要符合标识符命名规则。“parameters”表示传入函数的形参表,多个参数之间使用英文逗号分隔。“function_suite”是函数的代码。return是返回语句,如果函数没有返回值,返回语句可以省略。“expression”是返回的表达式、变量或字母常量。
形参表是传入函数的参数变量,可以传入多个参数变量,每个参数变量之间用英文逗号分隔,形参表的语法如下:
datatype para1,……,datatype paran
其中datatype是参数变量的数据类型,para1是参数变量的名称,参数变量可以在函数体内使用,但不能在函数体外使用。

注释

C程序代码也可以包含注释,对编写的代码进行说明,编译器在编译过程中会忽略这些注释。注释可以分为单行注释和多行注释。单行注释使用“//”,多行注释使用“/*”和“*/”。
单行注释:
#include <stdio.h>
int main()
{
//输出Hello World
printf("Hello World\n");
return 0;
}

多行注释:

/******************************************
作者:
创建日期:
功能描述
*/
#include <stdio.h>
int main()
{
printf("Hello World\n");
return 0;
}
在编写C语言源代码时,应该多使用注释,这样有助于对代码的理解。