Hello,大家好,我是木荣君,为了帮助初学者学习C程序的基本结构,今天这一节我们介绍一个完整的C程序,并学习其中的每个部分,带大家初识C程序。好了,Let's go~
1. 简单的C程序
- 先来看一个简单的C程序
#include <stdio.h>
#define CNT 10
int MyFirstC(void)
{
int i;
for (i = 0; i < CNT; i )
{
printf("My First C,Hello World! %dn", i);
}
return 0;
}
int main(int argc, char const *argv[])
{
MyFirstC(); // 函数调用
return 0;
}
这是一个很简单的程序,指定输出多次相同的一句话。现在,还不用了解程序的各个细节和原理。关键是要熟悉C程序的各个部分,以便后面学习C语言。在查看程序之前我们先来看看程序的执行结果
要想学习C程序,首先我们要了解函数,因为
函数
是C语言程序设计的核心内容。那么什么是函数呢?函数
是一段执行某项任务的代码,要指定函数的名称,程序中通过引用函数名,可以执行函数中的代码,程序还能将信息作为参数传递给函数,而函数也能将处理结果返回给程序。在C语言中我们常用两种类型的函数:库函数和用户自定义函数,库函数是编译器软件的一部分,而用户自定义函数是用户自己定义编写的程序代码段。
2. 程序的组成
- 下面我们将分析程序的各个部分
main函数
- 在每个可执行的C程序中main函数是必须的,在简单的情况下main函数由函数名main与其后的一对圆括号()和一对花括号{}组成。当然也可以给main函数指定传入参数和返回值,一般的标准写法就像例程中那样
int main(int argc, char const *argv[])
,此处我们不必过多深究,随着学习的进行我们会逐步了解main函数参数的使用。
#include和#define关键字
#include和#define位于例程中的开始部分。
- #include指令指示C编译器在编译时将包含头文件的内容添加到程序中。包含的文件是程序需要使用的头文件信息,一般包含函数的声明等,在调用库函数时需要指定对应的头文件才可以正常编译。一般所有的C程序都要包含一个或多个头文件
- #define指令是宏定义项,在整个程序中替换指定项。如果用#define在程序的顶部设置了宏定义,不仅整个程序都能使用该项,而且在需要时可以很方便的修改该项,只需要修改#define这一行就行了,便可以替换所有该项的值,省去了逐一替换的麻烦。
变量
- 定义变量位于
int i
,变量在内存中用于存储信息。在程序执行期间,程序使用变量存储各种不同类型的信息。在C语言中变量必须先定义后使用,否则编译会报语法错误。变量的定义告诉编译器变量的名称和存储信息的类型。
自定义函数
- 函数调用之前必须先声明,这样程序才能找到函数片段。此例程中我们定义了一个函数为
int MyFirstC(void)
,此函数的返回值为int型,传入参数为空,也就是不进行参数传递。函数在调用时直接写函数原型即可。 - 函数中我们除了定义了变量,还使用了程序语句
for、printf、return
语句,其中for
语句是循环语句,根据宏定义指定循环次数。而printf语句是标准输出语句,将自定义信息打印到标准输出中,显示到屏幕上。
程序注释
- 在C语言中程序注释是以
/* */
或者//
,前者一般是对程序段进行注释,后者一般是对某句话进行注释。编译器会忽略所有的注释,无论你注释写在任何位置或任何内容,都不会影响程序的执行。注释只是方便程序阅读,提高程序的可读性和可维护性。
/*定义变量a和b*/
int a = 0;
int b = 0;
int c = -1; // 定义变量C并初始化为-1
编译
- 最后通过GCC编译生成可执行性程序,生成可执行程序一般经历预处理、编译、汇编、链接四个阶段。具体每个阶段的介绍,有兴趣的读者可参看之前的文章《Linux系统刨析helloword背后的秘密》,其中有详细介绍。对于初学者来说可以暂不了解。
结束语
本节到此结束,初步认识了一个简单的C程序的构成,让我们对C程序有了一个基本的认识并对后续的学习中起到抛砖引玉的作用。虽然内容较少,但是非常重要。