《C++程序设计原理与实践》笔记 第2章 Hello, World!

2.1 程序

为了使计算机能够做某件事,你需要在繁琐的细节上明确告诉它怎么做。对“怎么做”的描述称为程序(program),编程(programming)是书写和测试这个程序的行为。为了向计算机精确描述这些事情,我们需要一种由特定语法精确定义的语言,这种语言称为编程语言,C++是为各种编程任务而设计的编程语言。

2.2 经典的第一个程序

这是经典的第一个程序的一个版本,它在屏幕上输出"Hello, World!":

Hello world

可以将这段文字看作是交给计算机执行的一组指令,就像交给一个厨师的一张菜谱。

cout << "Hello, World!\n"; 这一行打印字符串"Hello, World!",并紧跟一个换行。

在C++中,字符串常量是由双引号来分隔,\n是一个表示换行符的特殊字符。名称cout标准输出流,使用运算符<<放入cout的字符将显示在屏幕上(类似于C语言的stdout)。名称cout的发音是"see-out",它是"character output stream"的缩写。

// output "Hello, World!"注释(comment)。在一行中的//之后的内容都是注释。注释将会被编译器忽略,但对人们读懂代码很有帮助。人类是代码的主要读者。 当你在一个星期或者一年后回过头来阅读代码,并且已经忘记为什么这样编写代码时,你最有可能通过注释得到帮助。因此,做好你的程序的文档工作。

#include <iostream> 是一个#include指令,指示计算机从名为iostream的文件中“包含”功能。(书中代码通过一个std_lib_facilities.h头文件隐藏了使用C++标准库的细节,这里不使用)该文件使得程序可以使用标准C++ I/O流功能,在这里只使用标准输出流cout和它的输出运算符<<。使用#include包含的文件通常有.h后缀(C++标准库没有),称为头文件(header file)。头文件包含名字(类、函数、变量等)的定义,例如在程序中使用的cout

每个C++程序必须有一个称为main的函数,从该函数开始执行。函数(function)是一个指令序列,计算机会按照顺序来执行。一个函数包括四部分:

  • 返回值类型,指定返回结果的类型,在这里是int(表示“整数”)
  • 名字,在这里是main
  • 参数列表,在一对圆括号中,在这里参数列表是空的
  • 函数体,在一对花括号中,列出了这个函数将要执行的动作(称为语句

下面是最简单的C++程序,这个程序没有做任何事情:

int main() {}

"Hello, World!“程序的main函数有两条语句,首先在屏幕上打印"Hello, World!”,然后返回一个值0给它的调用者。由于main是由“系统”来调用的,因此我们不会使用返回值。但是在UNIX/Linux系统中,返回值可以用于检查程序是否成功。main返回0表示程序成功终止。

在C++程序中用于指定一个行为的部分称为语句(statement)(#include等预处理器指令除外),语句以分号结尾。

2.3 编译

C++是一种编译语言。要想使一个程序可以运行,必须将人类可读的源代码(程序文本)转换为计算机可以理解的可执行代码目标代码机器代码,这个过程称为编译(compilation),由一个称为编译器(compiler)的程序来做。

编译过程

典型的C++源代码文件的扩展名为.cpp(例如hello_world.cpp,也可以是.cc、.cxx等),头文件的扩展名为.h或没有(例如std_lib_facilities.h、iostream),目标文件的扩展名为.obj(在Windows中)或.o(在UNIX中),可执行文件的扩展名为.exe(在Windows中)、.out或没有(在UNIX中)。

编译器会阅读源代码并检查语法错误。常见错误包括:缺少头文件、文件名拼写错误、引号不配对、关键字错误、运算符错误、单引号/双引号错误、忘记加分号。

编译器可能是你在编程时最好的朋友。

2.4 链接

程序通常由几个单独的部分组成,它们经常由不同的人来开发。例如,"Hello, World!"程序包含我们编写的部分和C++标准库。这些单独的部分(有时称为翻译单元)必须被编译为目标代码,目标代码必须被链接起来以形成一个可执行程序。用于将这些部分链接起来的程序称为链接器(linker)。

编译和链接过程

请注意目标代码和可执行程序是不能在系统间移植的。例如,在Windows上编译得到的可执行程序无法在Linux机器上运行。

(library)是一些代码的集合,它们通常是由其他人编写的,我们用#include文件中的声明来访问这些代码。

由编译器发现的错误称为编译时错误(compile-time errors)(例如语法错误),由链接器发现的错误称为链接时错误(link-time errors)(例如函数未定义),直到程序运行时才发现的错误称为运行时错误(run-time errors)或逻辑错误(logic errors)(例如除以零、数组下标越界)。通常来说,编译时错误比链接时错误更容易理解和修正,链接时错误比运行时错误更容易发现和修正。

2.5 编程环境

如果使用命令行窗口,则需要自己编写编译和链接命令。如果使用IDE(继承开发环境),则只需点击运行按钮,IDE会自动完成编译和链接过程。

Windows

对于Windows系统,可以使用Code::BlocksVisual StudioCLion等IDE,创建一个C++控制台工程,将源代码拷贝到一个源文件,并点击运行按钮,即可看到运行结果。由于IDE一般自带了编译器(例如Visual Studio自带的编译器是MSVC),并自动调用编译器和链接器来生成可执行文件,因此不需要关心这些细节。

在Visual Studio中运行

Linux

对于Linux系统,一般自带了GCCClang编译器。在命令行中将源文件编译成可执行文件只需执行一行命令:

$ g++ -o hello_world hello_world.cpp

该命令使用GCC编译器(g++)将源文件hello_world.cpp编译成可执行文件hello_world ,之后执行hello_world即可:

$ ./hello_world 
Hello, World!

在命令行执行

这里的编译命令实际上一次性完成了编译和链接两个步骤,也可以分开执行:

$ g++ -c -o hello_world.o hello_world.cpp  # 编译
$ g++ -o hello_world hello_world.o  # 链接

详见:GCC编译器的使用方法

习题

2-1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为编写实际的应用程序做好准备:无论你是为了进行软件开发还是进行其他领域的工作。《C++程序设计原理实践(英文版)》假定你的最终目标是学会编写实际有用的程序。以基本概念和基本技术为重点:与传统的C++教材相比,《C++程序设计原理实践(英文版)》对基本概念和基本技术的介绍更为深入。这会为你编写有用、正确.易维护和有效的代码打下坚实的基础。, 用现代C++语言编程:, 《C++程序设计原理实践(英文版)》一方面介绍了通用的程序设计方法(包括面向对象程序设计和泛型程序设计)。另一方面还对软件开发实践中使用最广泛的程序设计语言——C++进行了很好的介绍。《C++程序设计原理实践(英文版)》从开篇就开始介绍现代C++程序设计技术,并介绍了大量关于如何使用C++标准库来简化程序设计的内容。, 适用于初学者以及任何希望学习新知识的人:, 《C++程序设计原理实践(英文版)》主要是为那些从未编写过程序的人编写的。而且已经由超过1000名大学一年级新生试用过。不过,对于专业人员和高年级学生来说,通过观察公认的程序设计大师如何处理编程中的各种问题。同样也会获得新的领悟和指引。, 提供广阔的视野:, 《C++程序设计原理实践(英文版)》第一部分非常广泛地介绍了基本程序设计技术,包括基本概念、设计和编程技术、语言特性以及标准库。这些内容教你如何编写具有输入、输出、计算以及简单图形显示等功能的程序。《C++程序设计原理实践(英文版)》第二部分则介绍了一些更专门性的内容(如文本处理和测试),并提供了大量的参考资料。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值