首页>文章>编程>C / c++

c++基础知识

学习c++的基本特性,包括变量、运算符、表达式和语句、函数、错误处理、I/O、数组、指针和引用,以及结构化软件项目。
这一章摘自这本书
  • “给我的孩子们:永远不要拿帮我做电脑的事情开玩笑。我教你怎么用勺子。”
  • 苏Fitzmaurice

在第一章中,我们将引导您了解c++的基本特性。至于整本书,我们将从不同的角度来看待它,但我们不会试图揭露每一个可能的细节——这无论如何都是不可行的。有关特定功能的更详细问题,我们建议您查看在线手册http://www.cplusplus.com/http://en.cppreference.com

1.1我们的第一个项目

作为对c++语言的介绍,让我们看一下下面的例子:

# include < iostream >Int main (){std::cout“生命的终极问题的答案,\n”《宇宙,万物皆是:》≪std::endl≪6 * 7≪std::endl;返回0;}

的收益率

生命终极问题的答案宇宙和万物皆是:42

道格拉斯·亚当斯[2]认为。这个简短的例子已经说明了c++的几个特性:

  • 输入和输出不是核心语言的一部分,而是由库提供的。必须明确地包括它们;否则我们不能读或写。
  • 标准I/O具有流模型,因此命名为< iostream >。为了启用它的功能,我们包括< iostream >在第一行。
  • 每个c++程序都是从调用这个函数开始的主要。它返回一个整数值,其中0表示成功终止。
  • 牙套{}表示一个代码块/代码组(也称为复合语句)。
  • std:: coutstd:: endl定义在< iostream >。前者是在屏幕上打印文本的输出流。std:: endl终止一行。我们也可以用特殊的字符去一个新的行\ n
  • 操作器≪可用于将物体传递到输出流,如std:: cout用于执行输出操作。
  • std::表示从标准中使用类型或函数名称空间。命名空间帮助我们组织名字和处理命名冲突;看到§3.2.1之上。
  • 字符串常量(更准确地说是字面量)用双引号括起来。
  • 表达式6 * 7被计算并作为整数传递给std:: cout。在c++中,每个表达式都有一个类型。有时,作为程序员,我们必须显式声明类型,有时编译器可以为我们推断类型。6和7是类型的字面值常量int因此它们的乘积是int

在您继续阅读之前,我们强烈建议您在您的计算机上编译并运行这个小程序。编译并运行后,您可以稍微摆弄一下它,例如,添加更多的操作和输出(并查看一些错误消息)。最后,真正学习一门语言的唯一方法就是使用它。如果您已经知道如何使用编译器甚至c++ IDE,则可以跳过本节的其余部分。

Linux:每个发行版都至少提供了GNU c++编译器——通常已经安装(参见B.1节中的简短介绍)。假设我们调用程序hello42.cpp;它很容易用命令编译

g++ hello42.cpp

根据上个世纪的传统,生成的二进制被称为a.o ut默认情况下。有一天,我们可能有多个程序,然后我们可以使用更有意义的名称作为输出标志:

c++ hello42.cpp -o hello42.cpp

我们也可以使用构建工具使(在§7.2.2.1中概述),提供(在最新版本中)构建二进制文件的默认规则。因此,我们可以调用

使hello42

使将在当前目录中查找类似命名的程序源。它会发现hello42.cpp,以及. cpp是c++源代码的标准文件后缀,它将调用系统默认的c++编译器。编译完程序后,可以在命令行中将其调用为

。/ hello42

我们的二进制文件可以在不需要任何其他软件的情况下执行,我们可以将它复制到另一个兼容的Linux系统中1然后在那里运行。

窗口:如果您正在运行MinGW,则可以按照与Linux下相同的方式进行编译。如果您使用Visual Studio,则需要首先创建一个项目。首先,最简单的方法是使用控制台应用程序的项目模板,如所述,例如,在http://www.cplusplus.com/doc/tutorial/introduction/visualstudio。当您运行程序时,在控制台关闭之前,您有几毫秒的时间来读取输出。要将读取阶段延长到1秒,只需插入不可移植命令睡眠(1000);,包括< windows.h >。在c++ 11或更高版本中,等待阶段可以移植地实现:

std:: this_thread:: sleep_for (std::空间:秒(1));

包括后<空间>线程> <。微软提供了名为“Express”的免费版本的Visual Studio,它像专业版本一样提供对标准语言的支持。不同之处在于,专业版提供了更多的开发人员库。由于本书中没有使用这些,您可以使用“Express”版本来尝试我们的示例。

IDE:像本书中的例子这样的短程序可以用普通的编辑器轻松处理。在较大的项目中,建议使用集成开发环境查看函数在哪里定义或使用,显示代码内文档,搜索或替换项目范围内的名称,等等。KDevelop是KDE社区用c++编写的免费IDE。188bet备用网它可能是Linux上最有效的IDE,并且可以很好地与gitCMake。Eclipse是用Java开发的,速度明显较慢。然而,最近为了改进对c++的支持,它投入了大量的精力,许多开发人员使用它的效率很高。Visual Studio是一个非常可靠的IDE,它有一些独特的功能,比如一个小型的彩色页面视图作为滚动条。

找到最具生产力的环境需要一些时间和实验,当然这取决于个人和合作的品味。因此,它也将随着时间的推移而发展。

金宝搏188亚洲体育真人始乐InformIT促销邮件和特别优惠

我希望收到独家报价,并听到有关InformIT及其品牌家族的产品。金宝搏188亚洲体育真人始乐我可以随时退订。

概述


培生教育有限公司(Pearson Education, Inc., 221 River Street, Hoboken, New Jersey 07030)提供本网站,提供可通过本网站购买的产品和服务的信息。

本隐私声明概述了我们对隐私的承诺,并描述了我们如何收集、保护、使用和共享通过本网站收集的个人信息。请注意,培生的其他网站和在线产品及服务有其单独的隐私政策。

信息的收集和使用


为了开展业务并提供产品和服务,培生通过与本网站相关的几种方式收集和使用个人信息,包括:

问题及查询

对于查询和问题,我们会收集查询或问题,以及姓名、联系方式(电子邮件地址、电话号码和邮寄地址)以及通过“联系我们”表格或电子邮件自愿提交给我们的任何其他附加信息。我们使用这些信息来解决询问和回答问题。

在线商店

对于通过本网站上的在线商店下达的订单和购买,我们会收集订单详细信息、名称、机构名称和地址(如适用)、电子邮件地址、电话号码、送货和账单地址、信用卡/借记卡信息、送货选项和任何指示。我们使用这些信息来完成交易、履行订单、与下订单或访问在线商店的个人沟通,以及用于相关目的。

调查

培生可能提供提供反馈或参与调查的机会,包括评估培生产品、服务或网站的调查。参与是自愿的。培生收集调查问题中要求的信息,并使用这些信息来评估、支持、维护和改进产品、服务或网站,开发新产品和服务,进行教育研究以及调查中指定的其他目的。

比赛及绘图

偶尔,我们可能会赞助比赛或绘画。参与是可选的。培生会收集参赛者的姓名、联络资料及其他在参赛表格上注明的资料,以进行比赛或抽奖。培生可能会根据法律要求,从竞赛或抽奖的获胜者那里收集额外的个人信息,以便颁发奖品和用于税务报告目的。

时事通讯

如果您已选择接收电子邮件通讯或促销邮件和特别优惠,但想取消订阅,只需电子邮件information@金宝搏188亚洲体育真人始乐informit.com

服务公告

在极少数情况下,有必要发布严格与服务相关的公告。例如,如果我们的服务因维护而暂时停止,我们可能会向用户发送电子邮件。一般来说,用户不能选择退出这些通信,但他们可以停用他们的帐户信息。然而,这些通信在本质上不是促销。

客户服务

我们定期与用户沟通,以提供所要求的服务,并且当用户通过我们的网站提交信息时,我们会根据用户的意愿通过电子邮件或电话回复与他们的帐户有关的问题联络表格

其他信息的收集和使用


应用和系统日志

培生自动收集日志数据,以帮助确保本网站的交付、可用性和安全性。日志数据可能包括有关用户或访问者如何连接到本网站的技术信息,例如浏览器类型、计算机/设备类型、操作系统、互联网服务提供商和IP地址。我们将此信息用于支持目的和监控站点的运行状况、识别问题、改进服务、检测未经授权的访问和欺诈活动、预防和响应安全事件以及适当地扩展计算资源。

网络分析

培生可能会使用第三方网络趋势分析服务(包括Google Analytics)来收集访问者信息,如IP地址、浏览器类型、参考页面、访问过的页面以及在特定网站上花费的时间。虽然这些分析服务以匿名方式收集和报告信息,但它们可能会使用cookie来收集网络趋势信息。收集的信息可能使Pearson(但不是第三方web趋势服务)能够将信息与应用程序和系统日志数据链接起来。培生将这些信息用于系统管理、识别问题、改进服务、检测未经授权的访问和欺诈活动、预防和响应安全事件、适当扩展计算资源以及支持和提供本网站及其服务。

Cookies及相关技术

本网站使用cookie和类似的技术来个性化内容,测量流量模式,控制安全性,跟踪本网站信息的使用和访问,并提供基于兴趣的消息和广告。用户可以通过浏览器管理和阻止cookie的使用。禁用或阻止某些cookie可能会限制本网站的功能。

不要跟踪

本网站目前不响应禁止跟踪信号。

安全


培生采用适当的物理、管理和技术安全措施来保护个人信息免遭未经授权的访问、使用和披露。

孩子们


本网站不面向13岁以下儿童。

市场营销


培生可以向用户发送或直接发送营销信息,前提是

  • 培生不会将作为K-12学校服务提供商收集或处理的个人信息用于定向或有针对性的广告。
  • 这种营销符合适用法律和培生的法律义务。
  • 培生不会故意直接或发送营销通信给个人谁表示了偏好不接受营销。
  • 在适用法律要求的情况下,对营销的明示或默示同意存在且未撤销。

培生可以在有限的基础上向第三方服务提供商提供个人信息,仅代表培生或培生作为其服务提供商的关联公司或客户进行营销。营销偏好可能随时发生变化。

更正/更新个人资料


如果用户的个人身份信息发生变化(例如您的邮寄地址或电子邮件地址),我们将提供一种方法来更正或更新用户提供给我们的个人数据。这可以在帐户页面。如果用户不再需要我们的服务,并希望删除他或她的帐户,请联系我们customer-service@金宝搏188亚洲体育真人始乐informit.com我们将处理用户帐户的删除。

选择/退出


用户可以在知情的情况下选择是否继续使用InformIT提供的某些服务。金宝搏188亚洲体育真人始乐如果您选择从我们的邮件列表中删除自己,只需访问以下页面并取消您不再希望接收的任何通信:www.金宝搏188亚洲体育真人始乐informit.com/u.aspx

出售个人资料


培生不会出租或出售个人信息以换取任何金钱。

虽然皮尔逊不出售个人信息,根据内华达州法律的定义,内华达州居民可以通过电子邮件请求不出售他们的个人信息NevadaDesignatedRequest@pearson.com

加州居民补充隐私声明


加州居民应该读读我们的加州居民补充隐私声明连同本私隐声明一并提交。的加州居民补充隐私声明解释培生遵守加州法律的承诺,并适用于通过本网站和服务收集的加州居民的个人信息。

分享与披露


培生可能会在以下情况下披露个人信息:

  • 这是法律规定的。
  • 经个人同意(或其父母同意,如果个人是未成年人)
  • 在法律允许或要求的范围内响应传票、法院命令或法律程序
  • 根据适用法律保护个人、数据、资产和系统的安全
  • 与出售、合资或以其他方式转让部分或全部公司或资产有关,但须遵守本隐私声明的规定
  • 调查或处理实际的或涉嫌的欺诈或其他非法活动
  • 行使其合法权利,包括执行本网站的使用条款或其他合同
  • 培生的附属公司以及为培生工作的其他公司和组织,他们有义务按照本隐私声明保护个人信息的隐私
  • 对于学校、组织、公司或政府机构,培生在学校或代表这些组织、公司或政府机构收集或处理个人信息。

链接


本网站包含到其他网站的链接。请注意,我们不负责此类其他网站的隐私做法。我们鼓励我们的用户在离开我们的网站时保持警惕,并阅读每个收集个人信息的网站的隐私声明。本隐私声明仅适用于本网站收集的信息。

请求及联络


联系我们查阅本私隐声明,或对您的个人资料私隐有任何要求或疑问。

本隐私声明的变更


我们可能会通过更新发布来修改本隐私声明。我们将在公告中注明修订的生效日期。通常,进行更新是为了提供更大的清晰度或符合法规要求的变化。如果更新涉及个人信息的收集、保护、使用或披露的重大变化,培生将通过本网站的显著通知或其他适当方式提供变更通知。在已发布的修改证明生效日期后继续使用本网站。如果您对本隐私声明有任何疑问或疑虑,或对任何修订有任何异议,请与我们联系。

最后更新:2020年11月17日