第1章 C/C++语言简介与环境搭建 1.1 C语言和C++ C++是一种广泛使用的编程语言,它是C语言的扩展和增强版。C++名字中的两个加号表示它包含了C语言的所有功能,并在此基础上引入了更多的特性和功能。 也就是说,我们在真正学习C++之前应该先学习C语言的部分。很多人认为C++ 就是 C++,实际上 C++ 也是分为两部分的,在面向对象之前的部分,我们可以把它当作是 C 语言来学习,从面向对象的部分开始,才真正开启 C++ 的学习大门。 在本书中,我们重点以 C 语言为主,如果你对本书的学习方式认可的话,可以关注后续老邪关于 C++ 部分的新书,当然前提是你必须有 C 语言的基础,另外一本书中的进阶内容才会真的适合你。 1.2 C语言的特点 C语言是一种高效的编程语言,能够快速执行程序。 它具有灵活性,可以进行底层的内存操作和高级的程序设计。 C语言的移植性很好,可以在不同计算机平台上运行。 这门语言简洁直观,语法清晰,易于学习和理解。 C语言支持指针,能够直接操作内存地址,提供更多的编程灵活性。 1.3 C语言的用途 C语言常用于系统编程,编写操作系统和驱动程序。 它被广泛应用于嵌入式系统开发,如智能手机、家电等。 C语言也常用于游戏开发,实现高性能的游戏引擎和逼真的图形效果。 在网络编程领域,C语言被用于编写服务器端程序和网络协议。 由于其高效性和底层控制能力,C语言在科学计算和大数据处理中也有广泛应用。 1.4 C语言的开发工具 1.4.1 集成开发工具 集成开发工具(IDE)中包含代码编辑工具、编译器,提供丰富的代码编辑功能,以及快捷的编译、运行、调试等功能。常用的集成开发工具有以下几个。 Visual Studio:由Microsoft开发的Visual Studio是一个功能强大的IDE,具有全面的集成开发环境,支持C++以及其他编程语言。它提供了丰富的工具,可以实现调试、自动完成、代码重构等功能。 Xcode:Xcode是苹果公司提供的集成开发环境,主要用于开发macOS和iOS应用程序。它支持C++编程,并且具有代码编辑器、调试器、可视化界面设计工具等功能。 Eclipse:Eclipse是一个开源的跨平台IDE,支持C++和其他编程语言。它具有灵活的插件系统,可以根据需要进行扩展和定制。 CLion:JetBrains开发的CLion是专门为C++开发设计的IDE。它提供了智能代码完成、静态分析、调试器等功能,并且与CMake和其他构建系统紧密集成。 Dev-C++(推荐):是一个免费的集成开发环境,用于C和C++编程。它是基于Windows操作系统的,旨在提供一个简单易用的开发环境,特别适合初学者和小型项目。 Dev-C++提供了一个简洁的界面和一系列工具,使得C和C++的开发变得更加便捷。它包含了一个代码编辑器,具有语法高亮显示、自动完成和代码折叠等功能。此外,它还内置了GNU编译器套件(MinGW)作为默认编译器,可以直接编译和运行C和C++代码。 Dev-C++的特点包括: (1)轻量级:Dev-C++是一个相对较小且轻量级的IDE,安装和启动速度快,对于简单的C和C++项目非常适用。 (2)简单易用:它提供了一个直观的用户界面,容易上手。对于初学者来说,使用Dev-C++可以快速开始学习并实践C和C++编程。 (3)功能丰富:虽然Dev-C++的界面相对简单,但它仍提供了一些有用的功能,如调试器、代码模板、多文件项目支持等。 需要注意的是,尽管Dev-C++是一个在初学期间非常受欢迎的IDE,但其开发和维护在过去几年中相对较少。因此,一些新的C++特性和最新的编译器可能不被完全支持。对于更大型和复杂的项目,或者需要更现代化的C++功能的情况,考虑使用其他更新和更全功能的IDE可能更合适。 1.4.2 代码编辑器 代码编辑器实际上就是一个多功能的记事本,其中会包含编程语言中的关键词语法加亮等功能,通常用于快速的代码编辑或者查看源码。常用的代码编辑器有以下几种: Visual Studio Code:Visual Studio Code是一个轻量级的文本编辑器,支持C++语言和丰富的插件生态系统,可以通过插件添加调试和其他功能。 Sublime Text:Sublime Text是一个流行的文本编辑器,它具有干净的界面和强大的功能,可以通过插件扩展其功能来支持C++开发。 Notepad++(推荐):Notepad++是一个Windows平台下的文本编辑器,特别适用于简单的代码编辑。它具有语法高亮显示、语法折叠、多文档编辑等基本功能。 1.5 环境安装 安装包已经为你准备好,可以扫描右侧二维码获取。 (1)双击下载好的安装文件,如图1-1所示。 图1-1 安装文件 (2)在以下界面选择安装语言并单击“OK”按钮,如图1-2所示。 图1-2 选择安装语言 (3)进入许可协议界面,单击“我接受”按钮,如图1-3所示。 (4)进入选择组件页面,默认不用做任何操作,直接单击“下一步”按钮,如图1-4所示。 图1-3 许可协议界面 图1-4 选择组件页面 (5)选择安装位置,并单击“安装”按钮,如图1-5所示。 老邪使用的默认安装目录,在C盘的盘符下,只要C盘的盘符够大,没有必要存放在其他盘符下。Program Files 目录就是系统为第三方软件准备的安装目录,我们只要尽情地使用就可以了,这样也能更方便我们对于第三方软件的管理。 图1-5 选择安装位置 (6)点击“安装”按钮之后会看到安装进度,如图1-6所示。 图1-6 安装进度 (7)安装完成后直接单击“完成”按钮即可,单击之后进入环境初步配置界面,选择操作页面的语言,我们选择“简体中文”选项之后单击 “Next”按钮,如图1-7所示。 图1-7 选择页面语言 (8)进入字体配置界面,选择适合自己的配置,并单击“ Next”按钮,如图1-8所示。 图1-8 字体配置界面 (9)设置完成直接单击“OK”按钮即可,如图1-9所示。 图1-9 设置完成 (10)完成配置后将自动打开开发工具,我们可以在这里单击新文件,创建我们的第一个 C++ 源代码文件,如图1-10所示。 图1-10 创建第一个C++源代码文件 (11)在新建的文件中编写代码如下: #include // 标准输入、输出头文件 #include // 标准库头文件 // C/C++ 语言标准的主函数入口写法 // 这里注意, main 函数后面小括号里的参数也可以省略不写 int main(int argc, char *argv[]) { // 向控制台终端输出一行文字 printf("Hello 小肆!~"); // 程序运行结束后返回一个正确的值 // 这里的 EXIT_SUCCESS 实际上就是整数 0,表示成功 // 如果要使用 EXIT_SUCCESS 这个宏(常量),需要包含 stdlib.h 标准库头文件 // 由于 EXIT_SUCCESS 的定义在 stdlib.h 头文件中, // 所以如果不包含这个头文件则可以直接返回 0,也就是写成 return 0;也是可以的 return EXIT_SUCCESS; } 如果觉得编辑的文字太小可以在设置中手动修改,也可以通过按住Ctrl键 + 鼠标滚轮上下滑动,快速调整字体大小。 (12)编写好后按Ctrl + S 键保存代码到一个指定的目录中,并命名为 Demo01.cpp, 如图1-11所示。 注意C++源码的扩展名为 .cpp, C语言源码的扩展名为 .c,由于 C++ 向下兼容 C 语言,所以我们在这里使用 .cpp 就可以。 图1-11 保存代码 (13)保存之后我们再做一些基础配置。 这些配置主要是为了解决控制台运行程序时,针对 UTF-8 字符集显示乱码的问题,因为默认 Windows 控制台使用的字符编码是 GBK。 ① 在“工具”选项卡中选择“编辑器”选项,如图1-12所示。 图1-12 编辑器选项 ② 在编辑器属性界面中,New Document Encoding 选项中选择“UTF-8”,然后单击“确定”按钮,如图1-13所示。 图1-13 选择UTF-8 ③ 再在“工具”选项卡中选择“编译选项”,如图1-14所示。 图1-14 编译选项 ④ 在“编译选项”界面中添加“-fexec-charset=gbk”,之后单击“确定”按钮, 如 图1-15所示。 图1-15 编译时加入命令 (14)单击“编译”+“运行”按钮,编译并运行我们的第一个程序,如图1-16所示。 图1-16 编译并运行第一个程序 以上就完成了第一个C/C++的源码编写、编译以及执行,那么问题来了,我们执行的程序在哪儿呢?难道就仅仅是这个代码本身吗?当然不是,在对代码编译之后,会在源代码所在的目录中发现一个与代码同名的可执行文件,这个文件就是通过编译器编译之后的可执行文件。执行程序看到的运行效果,也是通过这个可执行文件得到的。在不同的系统中我们得到的可执行文件的名字也会有所不同。编译源代码实际上是编译工具通过命令来帮我们完成的,命令中不同的参数设置会影响生成的可执行文件名,以及文件的扩展名。比如,在Linux的系统下使用gcc编辑器。默认生成的可执行文件扩展名就是.out,默认生成的可执行文件名是a.out。关于这部分内容,在这里只要有个初步的了解就可以了。本书中,我们的首要任务是学会如何写代码,其他的事情,暂时不用过分地关心。 1.6 C/C++ 中的通用基础语法 通过上文的第一个 C 语言代码,就能得出一些基础的规律,那么下面就总结一下 C/C++中的通用基础语法。 每个独立的单词(关键词、变量名)之间需要用空格进行分隔。 每条语句都要以分号作为结束符,如果代码太长,在任意可以输入空格的位置换行。 在代码中以 # 开头的部分叫做预处理语句,比如包含头文件的语句 #include ,预处理语句不需要分号作为结束符。 在代码源文件中,以双斜线(//)开始到行末结束的部分是单行注释,注释的部分不参与代码的编译。 在代码源文件中,以斜线(/)、星号(*)开始到斜线、星号结束的部分是多行注释,注释的部分不参与代码的编译。 Demo001.c - 通用语法示例。 // 包含标准输入输出头文件 #include // 包含标准库头文件 #include // main() 函数的标准写法,每个程序有且必须仅有一个的主程序入口 // main() 函数后面小括号内的内容是执行主函数时可以传递的参数,可以省略不写 int main(int argc, char *argv[]) { // 调用标准输入输出头文件中定义的输出功能函数,向屏幕中输出一个字符串 printf("Hello 小肆!"); // 返回一个成功的值,这里的 EXIT_SUCCESS 等价于 0,其定义部分在 stdlib.h 头文件中 return EXIT_SUCCESS; // 这是一行单行注释,一直到行末都不会参与代码的编译 /* * 这是一个多行注释区间 * 这个区间同样也不参与代码的编译 */ } 1.7 本章小结 在本章中我们介绍了 C 语言的开发工具,包括编辑器以及集成开发工具,重点介绍了一个免费的开发工具(Dev-C++)的安装及基本使用。如果你是在校大学生,其实更推荐使用 CLion 作为学习环境。JetBrains 公司对于在校的大学生非常友好,只要你拥有一个属于自己的学生邮箱,就可以通过这个邮箱申请使用 JetBrains 公司的教育版权产品。一个好的开发工具可以让你的学习更加事半功倍。关于 CLion 的安装与使用就不在本书中做详细的介绍了,后续可以通过读者群获取相关的学习资料,帮助你更好地学习 C 语言。