1.2、c程序的基本结构

By | 2014年11月16日

还记得上一篇文章里的hello world吗?

现在让我们以它为例,学习c程序的基本结构。

下面是昨天那个程序

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    printf("Hello world!\n");
    return 0;
}

这里要说一下,如何复制文章中的代码
请用你的鼠标在代码区双击,你会发现所有的代码已经被选中,这时你可以按ctrl+c或者右键复制它

首先来看第一行和第二行
在小于号前面的内容的是一样的,首先是一个#,然后是include(包含),
通过英文我们可以猜出,这两句肯定是用来包含某些东西的。后面的stdio.h还有stdlib.h,它们看起来像一个文件。

没错,这个命令的作用就是包含一个文件,什么叫包含?不过是把include这个命令的位置替换为stdio.h这个文件里面的内容罢了。

你可能会问到,为什么要包含这两个文件?这个问题现在不必搞清楚。现在我们只需要知道写程序要在最前面加上这两句就行了。下面是这两个文件文件名的意义,不要死记硬背哦

  • stdio          Standard Input Output 标准输入输出
  • stdlib        Standard library              标准库

至于.h这个后缀怎么来的?h就是header(头)的第一个字母,像这样的文件我们把它叫做头文件

头文件里定义了很多东西,我们将在后面讲到。这个程序中使用的头文件是标准规定的(就是说任何一个符合标准的c语言编译器都应该提供这个文件)。它的位置就在编译器的相关目录内。

第四行是int main()

这是一个函数(可不要把它和数学里的函数搞混淆了),main是主要的意思,翻译成中文也就是主函数。

程序的执行必须有一个起点,这个起点就像是一个入口,由这个入口可以进入的整个程序这个“大房间”。就像你进入一个房间,需要有一个门(你当然可以翻窗户),main就是这个门。计算机在运行程序时就会从这个函数开始执行。

什么是函数?

可不要被函数这个东西吓到了。它和数学里面的一次函数、指数函数是完全不同的两个东西。程序里的函数和数学里的函数的英文都是function,你可能知道function还有功能 的意思,这个或许更像编程中的函数。一个函数可以完成一种或多种功能(一个函数完成一个功能就足够了)。

函数可以由你自己写,也可以别人提供函数,你来使用(使用一个函数叫做“调用”

现在不需要明白函数怎么玩,那是后面的事情。你需要知道一个c程序必须包含main函数,否则他就不是一个完整的程序!

至于int是什么意思?int就是Integer(整型)的缩写

我们现在不用知道int的作用,你只需要记住int main这种写法。

(部分书上介绍的是void main或只写main的写法,这两种写法都是不标准的,就是说在其他的编译器上可能不能成功编译)

在第五行和第八行分别有一个正(大)括号和反括号

他说明这个括号内的东西都是main这个函数里的。

第六行有一个printf,你可能根据运行的结果猜出来这个东西是用来输出文字的。

没错,printf前面的print就是打印的意思,打印在哪儿?当然是屏幕上啊!最后面f的意思是format,即“格式”,printf是格式化输出函数,因为它能按照我们要求的格式在屏幕上输出文字。

printf是一个输出函数,它的详细使用方法我们将在后面讨论。

在这个程序中,我们并没有书写任何关于printf这个函数的信息(除了第六行的一次调用),那么这个函数是哪儿来的呢?

没错,他就存在于头文件中。printf属于标准库函数,就是说它的代码是别人已经写好了的,我们可以直接使用它。

最后,是一个return,return是返回的意思。返回,还能干嘛?自然是退出咯

程序执行到return就会退出了。后面的0代表这个程序正常退出

因为我们没有使用程序的返回值,所以你可以返回任意一个整数,它并不会影响程序执行。

详细的return,我们将在函数一章重点学习


 

好了,要说的就这么多,下面我们来总结一下

  1. include可以包含头文件,将别的头文件的内容放到自己的程序中
  2. 程序必须要有main函数,并且程序从main处开始执行
  3. main后的大括号表示这个大括号括起来的内容都属于main函数
  4. return可以让程序退出

我们就学了这么多东西,你是否已经理解?

不懂?没关系!本篇文章的目的是让你对c程序的结构稍作了解。

如果你现在还有些晕晕乎乎的话是正常的赶脚,有些东西到后面自然就会茅塞顿开了

你可以继续往后看

发表评论

电子邮件地址不会被公开。 必填项已用*标注