第二章 C语言编程准备
第一章介绍了C语言的历史和程序设计的一些知识,本章将介绍C语言的特点。C程序由许许多多的标识符、关键字和操作符等组成。C语言规定了简单有效的语法规则并将它们组合在一起,串成一个个有丰富功能的程序。
2.1 C程序简介
本节将通过两个简单的C程序的讲解,使大家对C语言的特点有一个初步的印象。
2.1.1 简单C程序示例
【范例2-1】输出一个正方形,实现方法如示例代码2-1所示。
示例代码2-1
#include <stdio.h> /*包含文件*/
/*空行*/
int main(void) { /*main函数的声明,下面都为main函数的函数体*/
/*使用printf语句逐行输出正方形*/
printf("* * * * *\n"); /*输出第1行*/
printf("* *\n"); /*输出第2行*/
printf("* *\n"); /*输出第3行*/
printf("* *\n"); /*输出第4行*/
printf("* * * * *\n"); /*输出第5行*/
/*空行*/
return 0; /*返回语句*/
}
【运行结果】程序运行后,得到一个由*号组成的正方形框,可在Visual Studio上验证。
【代码解析】
- 第5~9行是函数体的内容,是程序功能的实现主体。每一行都是一个函数调用语句,调用了printf函数,其功能为打印子串。第5行打印的子串内容为“* * * * * *\n”,这个子串输出到屏幕时会将其中的\n处理为换行,其余字符按原样输出。
- 第10行与第2行一样,也是一个空行。同样也是为了隔开功能不同的两个程序段而设置的。
- C99标准规定无形参的main函数的声明要写为“int main(void)”,且要有“return 0;”语句。
【范例代码2-2】本范例简单地展示了C语言中一些操作符、变量和数据类型,实现方法如示例代码2-2所示。
示例代码2-2
#include <stdio.h> /*包含文件*/
/*包含空行*/
int main(void){ /*main函数声明*/
/*定义两个整型变量*/
int a = 3; /*定义并初始化a*/
int b = 7; /*定义并初始化b*/
/*定义两个浮点型变量*/
double c = 2.4; /*定义并初始化c*/
double d = 7.4; /*定义并初始化d*/
/*使用操作符进行计算*/
b = b + a; /*对b赋值*/
d = c * d; /*对d赋值*/
/*定义两个整型变量*/
printf("a = %d\n", a); /*输出a的值*/
printf("b = %d\n", b); /*输出b的值*/
printf("c = %d\n", c); /*输出c的值*/
printf("d = %d\n", d); /*输出d的值*/
return 0;
}
【代码说明】%d 的作用是将输出的数据转换为指定的格式输出。在这里,printf函数用字符串外的数值替换字符串中的内容后输出。
2.1.2 C程序的特点
-
C程序开头一般都有一些以#include开头的预处理语句,它的作用是用来包含一些外部文件;
-
都有一个main函数,它是程序的执行入口;
-
main函数都有以下声明:
int main(void)
-
程序的执行主体都放在main函数的函数体中;
-
变量必须定义后才能使用;
-
可以使用一系列的操作符对变量进行操作;
-
可以调用函数来执行一些功能;
-
都含有如下返回函数值的return语句:
return 0;
-
程序执行过程中,从main函数开始,到它的return语句结束;
-
一般有适当的注释语句,以辅助说明语句功能;
-
在不同程序段之间要适当地加空行,使程序结构清晰;
-
程序语句要有良好的缩进风格,以提高代码可读性。
2.1.3 标识符和关键字
标识符是在C语言中用来标识唯一的对象的符号。具体地说,就是各种名称,如变量的名称、常量的名称、函数的名称、数据类型的名称、命令的名称等。例如,在范例2-1中,include是标识符、main是标识符、int是标识符、void是标识符、printf是标识符,return是标识符。
标识符的第一个字符必须是字母或下划线,后跟字母、下划线或数字。标识符中区别大小写字母。
关键字也是标识符。在范例2-1和范例2-2中接触到了几个C语言的关键字,如int、double、void、return等。关键字是C语言定义的一些有特殊意义的字符串,是为C编译器专门保留的,因此,也称为保留字。由于关键字有特殊的含义,因此,程序员不能使用这些字符串作为变量名和函数名。
restrict | Unsigned |
break | Bool |
extern | return |
Void | case |
float | continue |
short | Volatile |
char | for |
signed | If |
While | const |
goto | sizeof |
static | default |
inline | struct |
do | int |
switch | double |
long | typedef |
else | register |
union | _Complex |
_Imaginary | auto |
enum |
2.1.4 C程序的执行步骤
1.编译:编译过程就是把C程序翻译成机器认可的机器码的过程。这个过程又分为预编译、编译阶段、优化阶段和汇编阶段四个部分。
-
预编译也叫预处理,就是在正式编译前所做的工作。C程序中的预处理命令都在这个阶段完成,预编译完成的基本上是对源程序的“替代”工作,如“#include<studio.h>”,就是使用文件“studio.h”的内容替换该命令。
-
编译阶段负责对预编译后的C程序进行词法和语法分析,C程序中的词法错误和语法错误会在这里被发现。
2.链接: 经过编译后得到的目标文件中的机器码是相互独立的,需要链接器将它们组合在一起,并解析它们之间的交叉引用。C程序如果调用了函数库,这个过程就会将调用命令与被调用的函数链接在一起。
3.运行:完成链接后,就会得到一个可执行文件,可以直接运行。运行后,就可以得到程序结果。如果程序中有屏幕输出的命令,便可以在屏幕上看到打印内容。
2.2 C程序开发环境
Turbo C、Visual C++ 2005、GCC3.2.2
2.3 小结
本章先介绍了C语言的一些基本特点,再介绍了标识符和关键字的概念,然后介绍了编译、链接和运行等在程序开发过程中的角色,最后介绍了开发环境,这是学习C语言最基本的技能。