分析第一个 C 语言程序

内容来自 C 语言中文网,个人觉得无聊,想练练打字来加深学习印象。(本次转载仅供学习,感谢原创!如有侵权请私信本人删除!)


前言

这节我们来分析一下这段代码,让读者有个整体的认识。代码如下:

#include <stdio.h>
int main()
{
	puts(" C 语言中文网");
	return 0;
}


一、函数的概念

先来看第 4 行代码,这行代码会在显示嚣上输出 “C 语言中文网”。前面我们已经讲过,puts 后面要带(), 字符串也要放在()中。

在 C 语言中,有的语句使用时不能带括号,有的语句必须带括号。带括号的称为函数(Function)

C 语言提供了很多功能,例如输入输出、获得日期时间、文件操作等,我们只需要一句简单的代码就能够使用。但是这些功能的低层都很复杂,通常是软件和硬件的结合,还要考虑很多细节和边界,如果将这些都交给程序员去完成,那将极大增加程序员的学习成本,降低编程效率。

好在 C 语言的开发者们为我们做了一件好事,他们已经编写了大量代码,将常用的基本功能都完成了,我们可以直接拿来使用。但是现在问题来了,那么多代码,如何从中找到自己需要的呢?一股脑将所有代码都拿来显然是非常不明智的。

这些代码,早已被分门另类地放在了不同的文件中,并且每一段代码都有唯一的名字。使用代码时,只要在对应的名字后面加上( )就可以。这样的一段代码能够独立地完成某个功能,一次编写完成后可以重复使用,被称为函数(Function)。读者可以认为,函数就是一段可以重复使用的代码。

函数的一个明显特征就是使用时必须带括号( ),必要的话,括号中还可以包含待处理的数据。例如puts(“C 语言中文网”);就使用了一段具有输出功能的代码,这段代码的名字是 puts, "C 语言中文网"是要给这段代码处理的数据。使用函数在编程中有专业的称呼,叫做函数调用(Function)

如果函数需要处理多个数据,那么它们之间使用逗号, 分隔,例如:

pow(10,2);

该函数用来求 10 的 2 次方。

需要注意的是,C 语言中的函数和数学中的函数不是同一个概念,不要拿两者对比。函数的英文名称是 Function,它还有 “ 功能” 的意思。大陆将 Function 翻译为 “函数”, 而台湾地区翻译为 “函式” ,读者要注意区分。


二、自定义函数和 mian 函数

C 语言自带的函数称为库函数(Library)库(Library)是编程中的一个基本概念,可以简单地认为它是一系列函数的集合,在磁盘上往往是一个文件夹。C 语言自带的库称为标准库(Standard Library),其他公司或个人开发的库称为第三方库(Third-Party Library)

除了库函数,我们还可以编写自己的函数,拓展程序的功能。自己编写的函数称为自定义函数。自定义函数和库函数在编写和使用方式完全相同,只是由不同的机构来编写。

示例中第 2 ~ 6 行代码就是我们自己编写的一个函数。main 是函数的名字,( ) 表明这是函数定义,{ } 之间的代码是函数要实现的功能。

函数可以接收待处理的数据,同样可以将处理结果告诉我们;使用 return 可以告知处理结果。示例中第 5 行代码表明,main 函数的处理结果是整数 0。return 可以翻译为 “返回”,所以函数的处理结果称为返回值(Return Value)

第 2 行代码中,int 是 integer 的简写,意为 “整数”。 它告诉我们,函数的返回值是整数。

需要注意的是,示例中的自定义函数必须命名为 main。C 语言规定,一个程序必须且只有一个 main 函数。main 被称为主函数,是程序的入口函数,程序运行时从 main 函数开始,直到 main 函数结束(遇到 return 或者执行到函数末尾时,函数才结束)

也就是说,没有 main 函数程序将不知道从哪里开始执行,运行时会报错。

综上所述:第 2 ~ 6 行代码定义了主函数 main,它的返回值是整数 0,程序将从这里开始执行。main 函数的返回值在程序运行结束时由系统接收。

有的教材中将 main 函数写作:

void main()
{
	//Some Code...
}

这在 VC6.0 下能够通过编译,但在 C-Free、GCC 中却会报错,因为这不是标准的 main 函数的写法,大家不要被误导,最好按照示例中的格式来写。

三、头文件的概念

还有最后一个问题,示例中第 1 行的 #include <stdio.h> 是什么意思呢?

C 语言开发者们编写了很多常用函数,并分门别类的放在了不同的文件,这些文件就称为头文件(header file)。每个头文件中都包含了若干个功能类似的函数,调用某个函数时,要引入对应的头文件,否则编译嚣找不到函数。

实际上,头文件往往只包含函数的说明,也就是告诉我们函数怎么用,而函数本身保存在其他文件中,在链接时才会找到。对于初学者,可以暂时理解为头文件中包含了若干函数。

引入头文件使用 #include 命令,并将文件名放在 < > 中,#include 和 < > 之间可以有空格,也可以没有。

头文件以 .h 为后缀,而 C 语言代码文件以 .c 为后缀,它们都是文本文件,没有本质的区别,#include 命令的作用也仅仅是将头文件的文本复制到当前文件,然后和当前文件一起编译。你可以尝试将头文件中内容复制到当前文件,那样也可以不引入头文件。

.h中代码的语法规则和 .c 中是一样的,你也可以 #include <xxx.c> ,这是完全正确的。不过实际开发中没有人会这样做,这样看起来非常不专业,也不规范。

较早的 C 语言标准库包含了 15 个头文件,stdio.h 和 stdlib.h 是最常用的两个:

  • stdio 是 standard input output 的缩写,stdio.h 被称为 “标准输入输出文件”,包含的函数大都和输入输出有关,puts() 就是其中之一。
  • stdlib 是 standard library 的缩写,stdlib.h 被称为 “标准库文件”,包含的函数比较杂乱,多是一些通用工具型函数,system() 就是其中之一。

总结

初学编程,有很多基本概念需要了解,本节涉及到很多,建议大家把上面的内容多读几遍,必将有所收获。

本节开头的示例是一个 C 语言程序的基本结构,我们不妨整理一下思路,从整体上再分析一遍:

1)第 1 行引入头文件 stdio.h 这是编程中最常用的一个头文件。头文件不是必须要引入的,我们用到了 puts 函数,所以才引入 stdio.h。例如下面的代码完全正确:

int main()
{
	retrun 0;
}

我们没有调用任何函数,所以不必引入头文件。

2)第 2 行开始定义函数 main。main 是程序的入口函数,一个 C 程序必须有 main 函数,而且只能有一个。

3)第 4 行调用 puts 函数向显示器输出字符串。

4)第 5 行是 main 函数的返回值。程序运行正确一般返回 0。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值