面向入门学者,以ANSI C为标准,以Visual C++ 6.0为编译工具,从实战的角度讲解C语言,力求让大家达到中级编程水平。内带有大量实例,复制到编译器可以直接运行,免去边看书边敲代码的痛苦。
一. C语言概述
第一章主要让初学者对C语言有个认识,快速搭建好开发环境,实际运行几个C语言程序,找到编程的兴趣和成就感。
1.为什么要学习C语言
可以毫不犹豫的说,C语言是学习编程的第一门语言,你不用考虑其他选择。
也许你将来的工作或学习不会使用C语言,但是它能让你了解编程相关的概念,带你走进编程的大门,以后学习其他语言,会触类旁通,很快上手,7 天学会一门新语言不是神话。
也只有C语言的教程(书籍、在线教程、视频等)才会介绍最基本的编程概念,手把手教你从零学会写代码;其他编程语言(C++、Java等)都是一带而过,对基础介绍很少。如果你从例如C++、Java、PHP等开始学习编程,会发现非常吃力,不知所云,根本无法掌控,最终还是要回到C语言。
C语言语法简单精炼,概念少,效率高,包含了基本的编程元素,后来的很多语言(C++、Java等)都参考了C语言,说C语言是现代编程语言的开山鼻祖毫不夸张,它改变了编程世界。
正是由于C语言的简单,对初学者来说,学习成本小,时间短,结合本教程,能够快速掌握编程技术。
C语言不但执行效率高(比C++、Java都高),而且应用广泛,可以用来开发桌面软件、硬件驱动、操作系统、单片机等,从微波炉到手机,从汽车到智能电视,都有C语言的影子。
所以说,学习一门年龄比自己还大的语言很有必要(C语言诞生于20世纪70年代初)。
当然,C语言也不是没有缺点,毕竟是70后老人,有点落后时代。不过这里不讲,讲了你也不明白,以后你自然会了解。
2.第一个C语言程序
学习一门新语言的惟一途径就是使用它来编程。对于初学者来说, 编写的第一个程序几乎都是相同的,即在屏幕上显示“Hello, world”,专业说法为打印“Hello, world”。
尽管这个程序很简单,但对初学者来说,它仍然可能成为一大障碍,因为要实现这个目的,首先要编写代码,然后编译、链接并运行,最后看到输出结果。掌握了这些操作细节以后,其它事情就比较容易了。
关于编译和链接将在下一节说明,这里先对程序进行解释:
第1行包含标准库文件,include称为文件包含命令,扩展名为.h的文件称为头文件。
第2行定义名为main的函数,它不接受参数值;main函数的语句都被括在花括号中;int为main函数返回值类型。
第3行打印“Hello, world”,main函数调用库函数printf以显示字符序列。
第4行表示main函数的返回值为0,return让函数返回一个值。
第5行结束main函数,花括弧必须成对出现。
位于“/* */”中和“//”后面的内容为注释,用来对程序进行说明;注释在编译时会被自动忽略。
一个C语言程序,无论其大小,都是由函数和变量组成的。
函数具有某些特定功能,能执行特定操作;函数中包含一些语句,以说明操作的过程。变量则用于存储计算过程中使用的值。
在本例中,函数的名字为main。通常情况下,函数的命名没有限制,但main是一 个特殊的函数名,每个程序都从main函数的起点开始执行,这意味着每个程序都必须在某 个位置包含一个main函数。
main函数通常会调用其它函数来帮助完成某些工作,被调用的函数可以是我们自己编写的,也可以来自于函数库。上述程序段中的第一行语句#include 用于告诉编译器在本程序中包含标准输入/输出库。许多C语言源程序的开始处都包含这一行语句。我们将在后续章节对标准库进行详细介绍。
函数之间进行数据交换的一种方法是调用函数向被调用函数提供一个值(称为参数)列表。函数名后面的一对圆括号将参数列表括起来。在本例中,main函数不需要任何参数,因此用空参数表( )表示。
函数中的语句用一对花括号{}括起来。本例中的main函数包含下面两条语句:
调用函数时,只需要使用函数名加上用圆括号括起来的参数表即可。上面这条语句将"hello, world\n"作为参数调用printf函数。printf是一个用于打印输出的库函数,在此处, 它打印双引号中间的字符串。
用双引号括起来的字符序列称为字符串或字符串常量,如"hello, world\n"就是一个字符串。目前我们仅使用字符串作为printf及其它函数的参数。
在C语言中,字符序列\n表示换行符,在打印中遇到它时,输出打印将换行,从下一行的左端行首开始。如果去掉字符串中的\n(这是个值得一做的练习),即使输出打印完成后也不会换行。在printf函数的参数中,只能用\n表示换行符。如果用程序的换行代替,例如:
printf("Hello, word
");
C编译器将会产生一条错误信息。
printf函数永远不会自动换行,这样我们可以多次调用该函数以分阶段得到一个长的输出行。上面给出的第一个程序也可以改写成下列形式:
这段程序与前面的程序的输出相同。
3.C语言开发工具
常用的C语言开发工具有很多,每个开发工具所支持的库函数和对标准的实现都有差异。不过,对于初学者,可以忽略这些细节,选择一款使用广泛、上手容易的开发工具才是王道。
Windows平台下推荐VC6.0或VS
Visual C++ 6.0简称VC或者VC6.0,是微软1989年推出的一款C/C++编译器,界面友好,调试功能强大。VC6.0是一款革命性的产品,非常经典,至今仍然有很多企业和个人在使用,很多高校也将VC6.0作为C语言的教学基础,作为上机实验的工具。本教程中的代码,也都是在VC6.0下运行通过。
VC6.0确实有点老了,微软原版VC6.0在XP、Win7、Win8下都存在兼容性问题,甚至不能正常启动,C语言中文网提供了两个经过第三方更改的版本。
1) VC6.0精简版(15M / 16M)
VC6.0精简版维持了原版VC6.0的界面,解决了兼容性问题,简化了安装过程,可以在XP和Win7下完美运行(Win8不行)。
2) C-Free MSCL版(42M)
C-Free MSCL版是在 C-Free 5.0 基础上集成了 Visual Studio 10.0 SP1 的编译器、调试工具、绿色部署工具等,支持XP、Win7、Win8,相当于给 Visual Studio 10.0 SP1 换了个界面。
下载地址:C-Free MSCL版下载
3) Visual Studio
微软后来对VC6.0进行了升级,并更名为Visual Studio(简称VS),支持更多的编程语言,更加强大的功能,不过 Visual Studio 文件很大,有3G左右,大部分功能初学者暂时不会用到;而且安装繁琐,不容易卸载干净。
Visual Studio 还有一个缺点是占用资源较多,不建议配置低的机器使用。
当然,如果你希望进行Windows开发,追求强大的功能,拥有良好的网络和高配的机器,那么 Visual Studio 也是一个很好的选择。
Visual Studio 下载地址:http://www.iplaysoft.com/vs2013.html
一点忠告:C语言初学者应化繁就简,尽快搭建起编程环境,实际运行几个C语言程序,找到学习的乐趣和成就感。而不是追求功能强大的开发工具,VC6.0精简版和C-Free MSCL完全可以满足初学者的需求。
Linux平台下推荐使用GCC
GCC是Linux下最流行最好用的C语言开发工具,不管是新手还是大牛,大部分都是GCC的拥护者,对于初学者,GCC是毋庸置疑的选择。大部分的Linux发行版自带了GCC,一般情况下无需安装。
Vim是Linux下的文本编辑器,通常与GCC结合使用,提高开发效率。
在Windows下,也有集成了GCC的开发工具,如 Code::Blocks、MinGW、C-Free 等,但不要期待这些工具在Windows下拥有良好的表现,实际的Windows项目开发中大部分使用VC6.0或其升级版Visual Studio。
给点提示
上面的开发工具不仅仅包含了C语言编译器,还包含了很多辅助功能,比如编辑器、代码高亮、调试功能和错误提示等,这叫做“集成开发环境”。
集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。