本节将介绍C语言基本结构,在了解C语言的基本结构后,接着说明各种C语言的语法,如此读者可循序渐进地了解C语言。
前面程序实例中,程序的左边有程序的行号,其实C语言程序是没有行号的,在此之所以有行号,主要是供读者阅读方便,所以在输入程序时,无须输入程序行号。
程序实例中,第1行与第2行是批注,如下所示:
凡是介于“/*”和“*/”之间的文字,编译程序均会略过,而不予编译。程序设计时,最好养成批注的习惯,以便阅读。
以上程序第3行及第4行的“#include”指令,是将函数库引用在编译程序内,未来程序链接后,即可产生正常的可执行文件。以上程序第10行~第12行的printf( )函数属于“stdio.h”头文件,所以第3行“#include stdio.h”将促使可正常使用printf( )函数调用。第4行的“#include stdlib.h”,stdlib.h是标准函数库头文件,将促使可正常使用system( )函数调用,下面章节会介绍更多C语言的函数库,只要此函数是在stdlib.h内定义,就不需使用#include引用该函数的头文件。第13行的system("pause")函数可以冻结窗口,同时促使窗口出现“请按任意键继续…”,此时程序会先暂停,当用户按下键盘上的任意键时,程序将继续往下执行。如果没有system("pause"),屏幕会一闪就结束,我们会看不到执行结果。
stdio.h和stdlib.h为什么又称为头文件(header file)呢?因为它们通常都是在程序开始处被引用,如果你的程序文件如下:
头文件stdio.h如下:
头文件stdlib.h如下:
上述程序在编译时,“#include <stdio.h>”和“#include <stdlib.h>”分别被stdio.h和stdlib.h头文件取代,如下图所示。
我们引用了头文件,读者可能会好奇,这些头文件存放在哪里?其实一般在编译程序文件夹内,通常有一个include文件夹,头文件就存放在此文件夹内。
例如,若将Dev C++安装在C盘,则可在“C:\Dev-Cpp”文件夹内找到include文件夹,头文件就存放在此文件夹内。
其实有些C语言编译程序,对是否在程序开头加上<#include stdio.h>和<#include stdlib.h>并不十分介意,程序仍可正常编译及执行,这是因为编译程序在编译时会自动加载头文件stdio.h和stdlib.h。有些编译程序对未在开头加上<#include stdio.h>和<#include stdlib.h>的程序会出现警告信息,但仍允许编译及执行。笔者建议最好照标准程序设计原则,该引用就引用,这样可确保所设计的程序未来能在所有编译程序上执行。同时,所设计程序的可移植性也大大提高了。
所有的C语言程序,均是由main( )开头的,C语言程序会执行{}间的内容。在程序实例ch1_3.c中,程序会执行第7行~第14行的内容。
所以可以说,C语言的基本架构就是:
int main( ) { … }
在程序实例ch1_3.c中,第7行~第14行是属于程序内容,如下所示。
值得注意的是,在每一个完整语句后面,一定要加上“;”,这代表一个语句的结束。
在C语言中,所有的变量在使用前一定要加以声明,以便编译程序为每个变量安排内存空间。往后使用到此变量时,编译程序就会自行到此空间存取数据。
实例1: 当我们在第7行声明“int=i;”之后,整个内存如下所示。
实例2: 当我们在第9行定义“i=3;”时,整个内存如下所示。
至于其他更详细的变量声明原则,将在下一章讨论。
在程序实例中预留了很多空白行,例如第8行。这是为了使程序看起来不拥挤,编译程序在看到这些空白行时,会将其忽略。
以下是整个程序的说明:
第1行及第2行是程序的批注。
第3行及第4行分别引用stdio.h和stdlib.h两个头文件。
第5行声明这是主程序。
第6行“{”左括号,表示主程序从这里开始。
第7行是将变量 i 设置为整数(int)。
第9行是设定变量 i 的值是3。
第10行是打印下列字符串“C程序设计”。
第11行是打印下列字符串“程序练习3”。
第12行是打印下列字符串“C是精彩的”。
第13行是让屏幕暂停可方便查看输出结果。
第14行是回传0。
第15行“}”右括号,表示主程序结束。
有关程序输入与输出的原则,将在第3章说明。