做者 谢恩铭,公众号「程序员联盟」。 转载请注明出处。 原文:www.jianshu.com/p/c73fecacd…git
《C语言探索之旅》全系列程序员
在上一课 C语言探索之旅 | 第一部分第二课:工欲善其事,必先利其器 中咱们说过,你能够用本身喜欢的 IDE,或者用文本编辑器、编译器和调试器这样的组合来学习本课程。github
不过,我以为对于初学者,仍是有必要演示一下某款 IDE 的具体下载和安装等操做。我就以 Code::Blocks 这款免费开源且跨平台的 IDE 为例吧。编程
先去 Code::Blocks 的官方下载页面:www.codeblocks.org/downloads/b… 。bash
2020 年 3 月 29 日 Code::Blocks 终于更新了 20.03 版(不容易啊,上一次的版本仍是 2017 年的),不过惋惜的是 macOS 的版本仍是停留在 13.12(网站上标识的是 13.12,但实际安装以后是 17.12 版)。app
Windows 用户请下载 .exe 的文件,通常来讲是下载 codeblocks-20.03mingw-setup.exe 这样的最新的 .exe 的安装文件。记得要有 mingw 字样的,才包含 GCC 编译器和 GDB 调试器。编程语言
Linux 用户请下载对应你的操做系统的版本。目前有 Debian、Ubuntu 和 RedHat 系。Ubuntu 能够用 apt 命令来安装,请看官方文档。编辑器
苹果 macOS 用户请下载最新版的 dmg 文件,例如 CodeBlocks-13.12-mac.zip。不过这个版本有点旧了,可能会有 bug。函数
Code::Blocks 的安装很简单,和安装 QQ 这样的普通软件没多大区别,一路默认到底就好。工具
安装完以后双击运行,你能够看到相似下图的界面:
上图中标注了四个区域:
那么,如何建立一个 C语言基本的控制台应用程序呢?
首先到菜单里,依次点击“File -> New -> Project”,
会打开相似以下的窗口:
能够看到,Code::Blocks 支持很是多的程序类型,这些程序类型用到不一样的库,好比 SDL(开发 2D 程序),OpenGL(开发 3D 程序),Qt 和 wxWidgets,等等。甚至还支持 Arduino、ARM 这样的嵌入式项目。
目前,这些图标不少都只是好看而已,由于你还没安装对应的库,全部不能用。
暂时咱们只用最基本的 Console application(表示“控制台应用”,简单来讲就是会弹出一个框,里面显示程序运行的结果,你也能够输入东西)。
选择 Console application,点击 Go 按钮到下一步:
这一步是让你选择要使用的编程语言,有 C 和 C++ 两个选项,咱们选择 C,表示要建立的是 C语言的项目。而后点击 Next 进入下一步:
Project Title 里面填写你要建立的项目名称,咱们填的是著名的 HelloWorld。Folder to create project in 是选择项目存放的路径。
Project filename 是指项目文件名称,能够看到是 .cbp 结尾的文件类型,cbp 是 Code Blocks Project 的首字母缩写,表示“Code::Blocks项目”。
点击 Next 到下一步:
这里咱们没必要更改什么,默认就好。点击 Finish(“完成”)结束配置,Code::Blocks 就会建立你的第一个项目了。
打开 Sources 里的 main.c 这个 C语言的源代码文件。点击上面工具栏里有一个绿色的三角形按钮,是用于运行程序,它会提示你是否要编译,点击 yes(固然了,你也能够点击绿色三角形边上的带齿轮的绿色三角形按钮,是用于“编译再运行”),运行起来后咱们的第一个控制台程序输出:
Hello world!
复制代码
如今,既然咱们已经把舞台都搭好了,该是时候把咱们的主角 C语言请出来了。咱们将一块儿来写第一个 C语言程序。
固然了, 这个程序会是黑白的,也不会跟你打招呼,更不会帮你泡咖啡。可能显得毫无用处,但倒是你的第一个程序,我保证你会有成就感的。
咱们在 Code::Blocks 这个 IDE 中看到,当你要建立一个项目时,IDE 会问你是建立 console(控制台)程序仍是 window(窗口)程序。
以前咱们为了快速演示,选择的是控制台程序。
其实只有这两种类型,没有其余的了:
先来介绍一下窗口程序,由于比较直观,比较漂亮,颜值爆表。
这样的程序你确定见到过,下图对大多数人来讲很熟悉吧。
是的,上图就是 Windows 系统的画图程序。它是一个窗口程序,就是有窗口的程序(有时候不止一个窗口)。我想你确定想学习建立这样的程序,可是若是你是第一次接触编程,那有点难。
一开始仍是最好从 console(控制台)程序入门。
那么,所谓的控制台程序长什么样呢?
最初的程序都是控制台程序,由于那个年代电脑还只能显示黑白色,并且也没有强大到能够运行窗口程序,不像今天的电脑。
固然了,时代在进步。Microsoft(微软)公司的 Windows 系统使得电脑能被广大群众使用,就是由于它操做很简单,几乎全部操做均可以用窗口程序完成。
Windows 实在是太流行了,以致于大多数人都不知道 console(控制台)程序长什么样。不过,我有一个好消息:“控制台程序并无死!”
实际上,Linux 操做系统给不少的人展现了控制台程序的魅力,下图就是 Linux 下的控制台程序的截图:
看上去还不错,是吗?好了,如今你已经对控制台程序有了初步概念了。
有一些注意点:
就如咱们上面提到的,建立像上图中的控制台程序,其实很简单,并且很是适合初学者。如今的控制台程序不只能够显示彩色,并且若是你要给它设置一个背景图片,也是能够办到的。
说了这些,那是否是只有 Linux 才有控制台程序,Windows 就没有呢?
固然也有,在 Windows 中它被称为 cmd,也就是 command(表示“命令”)的缩写,也称为“命令提示符”,是 Windows 环境下的虚拟 DOS 窗口。只不过它比较隐秘。能够用如下两种把它请出来:
上图就是 Windows 里面奇妙的控制台。
固然了,苹果的 macOS 操做系统中,咱们也能够打开控制台的,只要运行 Terminal 这个系统自带的应用程序:
对于 C语言的每个程序,咱们都要输入最基础的几行代码。这几行代码不是太特别,可是必不可少。
咱们如今就来看看“最基础的代码”长什么样。
以前咱们已经演示了,Code::Blocks 会为咱们生成 C语言程序的最基础代码,以下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Hello world!\n");
return 0;
}
复制代码
其中
int main()
复制代码
这一行也能够写成
int main(int argc, char *argv[])
复制代码
两种写法都是能够的,不过第二种(复杂一些的)更经常使用,也更专业。之后的课程咱们会用 int main(int argc, char *argv[])
这种形式。
对于第一次接触编程的朋友,可能这个最基础的代码也是使人难以理解。
因此咱们才要一块儿来学习如何阅读代码。
先从前两行开始吧:
#include <stdio.h>
#include <stdlib.h>
复制代码
这两行很特别,咱们会在源代码开头的地方见到这样的以 # 号开头的语句。像这样特别的行,称为预编译指令。
这个术语听起来有点复杂。预编译指令会在编译开始的时候,被一种叫作预编译器的程序所读取。
其实编译器为咱们作不少事情,咱们以后的课程会详细来讲明。
可是这两行究竟是什么意思呢?
这里的 # 号是预编译指令开始的标志,没有什么特别的含义,后面接着的 include 表示“包含”,因此这两句话的意思就是在咱们的程序里包含 stdio.h 和 stdlib.h 这两个文件,这两个文件在系统的库里已经存在了,这些文件被称为库文件。
若是没有这两句话,那咱们就不能在程序里调用这两个文件定义的东西了。
接着,咱们看到了下面的语句:
int main()
{
printf("Hello world!\n");
return 0;
}
复制代码
以上咱们所看到的语句块,被称为函数。其实 C语言的程序基本就是由函数来构成的。因此目前咱们的程序只有一个函数。
咱们如今还不会讲不少函数的细节,由于那将是后面的函数那一课的内容,如今还早。可是咱们会大致说一下函数的组成。
第一行包含了函数的名字,是第二个单词 main。因此这里的函数称为 main 函数。这是一个特殊的函数,程序执行老是从 main 函数开始。
一个函数有开始和结束,使用大括号 {} 来标识。因此咱们的 main 函数包含如下两行代码
printf("Hello world!\n");
return 0;
复制代码
这些在函数里的行也有名字,被称为指令。每一条指令都会让电脑作特定的事情。一个函数大致来讲是用来集中必定数目的指令。好比咱们能够建立一个函数叫作“打开文件”,这个函数会让电脑为你打开某个文件。
函数的优点就是当你写好了这个函数以后,你只须要使用(专业术语叫作调用)“打开文件”这个函数,电脑就会为你执行函数里面的指令。你没必要每次在须要实现“打开文件”功能的地方都重复写那些指令。函数能够大大节约代码空间,提升效率。
printf("Hello world!\n");
复制代码
这一行指令使得屏幕显示 "Hello World!"(表示“你好,世界!”)这一句话。当你的程序执行到这一行时,就在屏幕上显示相应的信息。而后会执行下一个指令。
printf 也是一个函数,定义在 stdio 库中,如今你知道
#include <stdio.h>
复制代码
这句话的重要性了吧,若是没有引入 stdio 这个库,那咱们的 main 函数就不能调用 printf 这个函数。
第二个指令 return 0;
大体就是表示函数结束了,而且返回 0 值。
那么,为何个人函数返回 0,不是返回其余值呢?
实际上,每一个 C语言程序结束时都会返回一个值,0 表示一切正常结束,其余的值表示异常。
这里咱们只是简单介绍了一下函数的概念。关于函数的细节,请期待以后的课程。
在 Code::Blocks 里面编译(Build / Compile)并运行(Run) 你的最基础代码。获得以下结果
能够看到你的第一个程序在屏幕上显示了 "Hello world!"。
下面的那几行文字是 Code::Blocks 生成的,表示程序顺利执行,而且耗时 0.297 秒。
"Press any key to continue"这句话是让你按键盘上的任意键来退出控制台程序。
特殊字符的做用是用来表示“换行”,“隔开一个制表符的空间”,等等。
特殊字符很好辨认,常常是两个字符的组合,第一个字符是反斜杠(\
),第二个字符是一个数字或者一个字母。
下面的两个特殊字符是咱们常常会用到的:
\n
:换行符 (做用相似按回车键)。\t
:制表符 (做用是空出几个空格。空格的数目能够配置)。在结束这一课前,咱们必须再来说一下注释。不论什么编程语言,咱们均可以在源代码里添加注释。C语言固然也不例外。
简单地说,注释就是在你程序之中用来标注这个程序的做用,某一行代码的做用,等等的文字。注释真的很重要,由于即便是一个计算机天才,也要在某些地方作一些注解。注释有以下做用:
在以后阅读本身写的代码时不至于迷失方向。不能否认,在从新阅读以前写的代码时,咱们经常会忘记这个函数是干什么的,那个地方为何要这样写。特别是代码量很大,几千几万行甚至更多时,若是没有注释,那阅读起来会很费力。
若是你把你的代码给别人阅读,注释每每能够节省对方理解你的代码的时间。
要在 C语言的代码中插入注释,有几种形式:
//...
这样的形式。/* ... */
的形式。虽然程序行数变多了,可是注释却使咱们的代码变得易读不少。编译代码的时候,编译器会忽略全部的注释,这些注释不会出如今最终的程序里,只是为程序员服务的。
记住: 注释要起到引导阅读代码的做用,以便理清头绪。可是不要在很显然就能懂的地方添加注释。
引用 IBM 公司的一句格言: “若是一个程序,在你仅仅看完它的注释以后,你不能了解它的做用,那么把这个程序扔了吧。” -- 大公司就是这么严格,这么任性。
今天的课就到这里,一块儿加油吧!
下一课:C语言探索之旅 | 第一部分第四课:变量的世界(一),内存那档事
下一课开始,咱们一块儿探寻 C语言的变量的奇幻世界,还会聊到内存哦,有些难度。
我是 谢恩铭,公众号「程序员联盟」运营者,慕课网精英讲师 Oscar 老师,终生学习者。 热爱生活,喜欢游泳,略懂烹饪。 人生格言:「向着标杆直跑」