c++语言知识点CH2.docx

上传人:b****2 文档编号:264041 上传时间:2023-04-28 格式:DOCX 页数:20 大小:290.23KB
下载 相关 举报
c++语言知识点CH2.docx_第1页
第1页 / 共20页
c++语言知识点CH2.docx_第2页
第2页 / 共20页
c++语言知识点CH2.docx_第3页
第3页 / 共20页
c++语言知识点CH2.docx_第4页
第4页 / 共20页
c++语言知识点CH2.docx_第5页
第5页 / 共20页
c++语言知识点CH2.docx_第6页
第6页 / 共20页
c++语言知识点CH2.docx_第7页
第7页 / 共20页
c++语言知识点CH2.docx_第8页
第8页 / 共20页
c++语言知识点CH2.docx_第9页
第9页 / 共20页
c++语言知识点CH2.docx_第10页
第10页 / 共20页
c++语言知识点CH2.docx_第11页
第11页 / 共20页
c++语言知识点CH2.docx_第12页
第12页 / 共20页
c++语言知识点CH2.docx_第13页
第13页 / 共20页
c++语言知识点CH2.docx_第14页
第14页 / 共20页
c++语言知识点CH2.docx_第15页
第15页 / 共20页
c++语言知识点CH2.docx_第16页
第16页 / 共20页
c++语言知识点CH2.docx_第17页
第17页 / 共20页
c++语言知识点CH2.docx_第18页
第18页 / 共20页
c++语言知识点CH2.docx_第19页
第19页 / 共20页
c++语言知识点CH2.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

c++语言知识点CH2.docx

《c++语言知识点CH2.docx》由会员分享,可在线阅读,更多相关《c++语言知识点CH2.docx(20页珍藏版)》请在冰点文库上搜索。

c++语言知识点CH2.docx

c++语言知识点CH2

2C++入门

通过编写最简单的C++程序,快速学习C++程序的基本结构以及输入输出方法。

另外,简单介绍了几种集成开发环境(IntegratedDevelopmentEnvironment,IDE)的使用方法。

2.1第一个C++程序

每当学习一门程序设计语言时,几乎所有程序员都编写过一个叫做“Hello,world!

”的程序。

我们就从这个程序的C++版本开始学习。

程序21

//向世界问好

#include

intmain()

{

std:

:

cout<<“Hello,world!

”<

:

endl;

return0;

}

这个程序非常简短,它的结果仅仅是在标准输出上显示Hello,world!

分析这个简短的C++程序,有助于我们掌握C++的一些基本的但很有趣的特性。

以两个斜线//开始直到行末部分是注释,这是C++特有的。

//向世界问好

当然,C风格的注释在C++中仍然有效。

/*向世界问好*/

两者的区别是C++风格的注释仅到行末为止,而C风格的注释可以跨越多行,或嵌在一行中间。

比如:

/*Sayhellototheworld

@Author:

Bill

@Date:

July23,2005

*/

intmain(intargc/*argumentcount*/,char*argv[]/*argumentvalues*/)

如同C语言一样,在C++中输入输出也不属于语言核心。

是C++的标准头文件之一,其中实现了输入输出功能。

如果要使用这些功能,就需要用#include指令包含这个头文件。

#include

请注意,标准C++的头文件去掉了.h,一方面避免了与标准C头文件的冲突,另一方面从#include指令上看就已经足够清楚了。

要了解更进一步的内容,请参看阅读材料2.4.2。

也和C语言一样,一个C++程序需要一个主函数main,整个程序将从main开始执行。

根据C/C++标准,main函数必须返回int,但可以有两种形式。

[HS00]

intmain()

intmain(intargc,char*argv[])

第二种形式可以接受参数。

习惯上约定main函数返回0表示工作正常,而其他值则表示出错。

return0;

如果没有return语句,main函数会返回0。

注意:

这一点不适用于其他任何函数,对于他们而言这应该是编译错误,至少会导致未定义的结果。

来看这一句:

std:

:

cout<<“Hello,world!

”<

:

endl;

std:

:

cout是标准输出流,一般代表屏幕输出。

名称cout前的std是标准库所使用的名字空间(namespace)。

:

:

称为域作用符,std:

:

cout表示位于名字空间(namespace)std中的cout。

std:

:

endl是标准库中的一个操纵符(manipulator),它的作用是写入一个换行符’\n’,使得接下来的输出从新的一行开始。

上面的语句使用标准库的输出运算符<<把”Hello,world!

”写入标准输出std:

:

cout中,然后又写入了std:

:

endl。

我们知道,<<也是移位运算,有关内容参见8重载运算符。

因为运算符<<是从左向右结合的,实际的计算过程如下:

(std:

:

cout<<“Hello,world!

”)<

:

endl

先计算(std:

:

cout<<“Hello,world!

”),其作用就是输出“Hello,world!

”,而这部分表达式的结果却仍是std:

:

cout。

于是原来的表达式就变成,

std:

:

cout<

:

endl

这个表达式的作用是输出一个换行,当然,它的结果仍旧是std:

:

cout。

所以,我们采用这一方便的形式串起来,就可以输出任意多的内容了。

2.2输入输出初步

C++兼容C,C语言中的输入输出——scanf()和printf()等——在C++中仍然可用,但他们存在很多缺点,C++则采用流的概念提供了更好的方法。

还是从一个简短的程序开始吧。

提示用户输入名字和年龄,向他(她)问好并打印年龄。

我们分别用C语言和C++来编写并作简单的比较。

先看C语言编写的程序。

(当然了,既然C++兼容C,这也是C++程序。

程序22

/*Sayhellotosomebody.*/

#include

intmain()

{

charname[20];/*注意:

请确保名字不超过19个字符*/

intage;

printf(“Yourname:

”);

scanf(“%s”,name);/*不可用&name*/

printf(“Yourage:

”);

scanf(“%d”,&age);/*必须用&age*/

printf(“Hello,%s.Ithinkyouare%d.\n”,name,age);

}

C语言中的IO函数都在头文件中定义,所以必须包含它。

这里输出到标准输出用printf(),从标准输入(一般是键盘),使用scanf()。

上面这个程序较好地完成了任务。

以上程序非常简单,但是也有好几个地方容易出错。

我们知道在C语言中,读写不同类型的输据,必须使用对应的格式说明符。

记忆它们是枯燥的,但最令人失望的是,这些格式说明符都被库函数规定好了,你不可能为新的类型增加新的格式说明符。

另一方面,为了搞清楚在参数是否使用&(取地址运算)也会让人额外费一些脑筋。

也就是说,C的输入输出(printf()和scanf()等)使用格式串,难用,易出错,不可扩充。

还有,在C语言中使用字符串时必须特别小心。

运行上面的程序时,一旦输入了太长的名字,比如大于19个字符,字符数组没有足够的空间就会导致出错,这完全可以从那个充满担心的注释中看出来。

再来看看用C++编写的程序。

程序23

/*Sayhellotosomebody.*/

#include

#include

usingstd:

:

cout;

usingstd:

:

cin;

usingstd:

:

endl;

intmain()

{

std:

:

stringname;

cout<<“Yourname:

”;

cin>>name;

intage;

cout<<“Yourage:

”;

cin>>age;

cout<<“Hello,“<

<<”.Ithinkyouare”<

}

C++中的IO都在头文件中,std:

:

cout是标准输出流,std:

:

cin是标准输入流。

C++中使用输出运算符<<可以输出任何基本类型的数据,与此对应,使用输入运算符>>也可以输入任何基本类型的数据(这里还没有&的问题)。

cin>>age;

为了避免每次都写std:

:

的繁琐,这里使用了using声明。

比如在声明了usingstd:

:

cout之后,我们直接写cout就等同于std:

:

cout。

也可以用using指令引入整个名字空间。

如:

usingnamespacestd;//引入名字空间std中的所有符号

这样以来,我们就不必书写那很多条using声明了。

我们还看到一个新东西std:

:

string——标准的字符串类型,这是C++标准库中最值得我们经常使用的东西之一。

不管怎样,这个字符串会随着需要自动地增长!

我们再也不用担心存储太长的字符串时出问题了。

而且,输入和输出一个std:

:

string与内部类型一样简便。

cin>>name;

cout<<“Hello,“<

这段程序的功能应该是不言自明了。

另外还需要提醒一下的是,在C语言中,你只能在函数外部或花括号开始的地方定义好所有变量,而在C++中,你可以在任何语句可以出现的地方定义变量,这也使得程序更为清晰。

如上age的定义。

2.3常用开发环境

学习C++需要一个合适的开发环境,下面简要介绍了几个常见的集成开发环境(IDE)。

其中的MinGW、MinGWDeveloperStudio、DevC++、Eclipse/CDT等都是免费资源。

2.3.1MinGWDeveloperStudio

MinGW(MinimalGNUforWindows)是一组免费的可以自由分发的头文件和库文件,它包含了可用于Windows环境下的GNU工具集合,因此不用借助任何第三方C运行库就可用于开发Windows程序。

MinGW对C++标准的支持相当好。

MinGWDeveloperStudio是一个跨平台的C/C++集成开发环境(IDE),它使用MinGW作为编译器,具有类似MSVisualStudio的操作界面,非常容易上手。

你可以在下载MinGWDeveloperStudio,然后安装它。

新建工程。

图21在MinGWDeveloperStudio中新建立Win32ConsoleProject

新建程序文件。

图22在MinGWDeveloperStudio工程中新建立程序文件

输入代码,保存,构建,运行。

其调试功能有,设置断点,单步执行,添加查看等。

图23构建MinGWDeveloperStudio工程

2.3.2DevC++

DevC++是一个全功能的IDE,它可以采用GCC,MinGW或Cygwin作为编译器。

你可以从或

新建工程。

图24

新建程序文件,输入代码。

保存,编译,运行。

图25

其调试功能有添加断点,单步执行,添加查看等。

2.3.3VisualC++6.0

VisualC++是MicrosoftVisualStudio中的C++开发环境,它界面友好,操作方便,但是对C++标准的支持不太理想。

新建工程。

图26

新建程序文件。

图27

输入代码,保存,编译,运行。

图28

其调试功能非常强大,可以设置断点,单步执行,查看变量和调用堆栈等。

2.3.4Eclipse/CDT/MinGW

Eclipse是一个优秀的开发平台,它采用插件工作方式,各种开发工具都以插件的形式组织。

其懒加载工作机制,使得每个插件只有在需要时才被加载,所以安装了众多插件之后,它的运行速度几乎不受影响。

CDT(C/C++DevelopmentTools)是Eclipse中的C++开发工具,也是以插件的形式提供的。

CDT本身不带任何编译器,相反它认为提供编译器是操作系统的事,而CDT只是调用编译器完成工作。

MinGW(MinimalGNUforWindows)是可用于Windows环境下的GNU工具集,这里仅使用其C/C++编译器。

下面介绍安装和配置的一般步骤。

安装Eclipse

从www.eclipse.org下载Eclipse,解压缩后即完成安装。

解压后的目录结构如下。

图29

注意:

Eclipse需要JRE(JavaRuntimeEnvironment),可在下载并安装。

安装CDT

从www.eclipse.org下载CDT,解压缩到Eclipse中。

启动Eclipse,选择Help|AboutEclipsePlatform|Plug-inDetails可以看到已经安装的CDT插件。

安装MinGW

从www.mingw.org指定的位置下载并安装MinGW。

配置

必须设置相应的环境变量,CDT才能找到MinGW。

表21

环境变量

设置

PATH

C:

\MinGW\bin

C_INCLUDE_PATH

C:

\MinGW\include

CPLUS_INCLUDE_PATH

C:

\MinGW\include\c++\3.2.3;C:

\MinGW\include\c++\3.2.3\mingw32;C:

\MinGW\include\c++\3.2.3\backward;C:

\MinGW\include

LIBRARY_PATH

C:

\MinGW\lib

注意:

1)以上假设MinGW安装在C:

盘。

2)CDT默认调用make进行编译和连接,可以简单地将mingw32-make.exe改名为make.exe,当然也可以修改CDT中的工程属性设置解决这个问题。

使用Eclipse/CDT

在Eclipse中新建C++工程。

图210

在工程中新建文件,输入程序并保存。

Eclipse自动编译并连接,生成可执行程序。

图211

运行程序,可以看到结果。

2.4阅读材料

2.4.1C++的历史

以下内容摘自维基百科——自由的百科全书之http:

//en.wikipedia.org/wiki/C_Plus_Plus。

HistoryofC++

C++(pronounced"seeplusplus")isageneral-purposecomputerprogramminglanguage.Itisastaticallytypedfree-formmulti-paradigmlanguagesupportingproceduralprogramming,dataabstraction,object-orientedprogramming,andgenericprogramming.Duringthe1990s,C++becameoneofthemostpopularcommercialprogramminglanguages.

BellLabs'BjarneStroustrupdevelopedC++(originallynamed"CwithClasses")duringthe1980sasanenhancementtotheCprogramminglanguage.Enhancementsstartedwiththeadditionofclasses,followedby,amongmanyfeatures,virtualfunctions,operatoroverloading,multipleinheritance,templates,andexceptionhandling.TheC++programminglanguagestandardwasratifiedin1998asISO/IEC14882:

1998,thecurrentversionofwhichisthe2003version,ISO/IEC14882:

2003.Newversionofthestandard(knowninformallyasC++0x)isbeingdeveloped.

InCandC++,theexpressionx++increasesthevalueofxby1(calledincrementing).Thename"C++"isaplayonthis,suggestinganincrementalimprovementuponC.

StroustrupbeganworkonCwithClassesin1979.TheideaofcreatinganewlanguageoriginatedfromStroustrup'sexperienceprogrammingforhisPh.D.thesis.StroustrupfoundthatSimulahadfeaturesthatwereveryhelpfulforlargesoftwaredevelopmentbutwastooslowforpracticaluses,whileBCPLwasfastbuttoolowlevelandunsuitableforlargesoftwaredevelopment.WhenStroustrupstartedworkinginBellLabs,hehadtheproblemofanalyzingtheUNIXkernelwithrespecttodistributedcomputing.RememberinghisPh.D.experience,StroustrupsetouttoenhancetheClanguagewithSimula-likefeatures.Cwaschosenbecauseitisgeneral-purpose,fast,andportable.Atfirst,class(withdataencapsulation),derivedclass,strongtypechecking,inlining,anddefaultargumentwerefeaturesaddedtoC.ThefirstcommercialreleaseoccurredinOctober1985.

In1983,thenameofthelanguagewaschangedfromCwithClassestoC++.Newfeaturesthatwereaddedtothelanguageincludedvirtualfunctions,functionnameandoperatoroverloading,references,constants,user-controlledfree-storememorycontrol,improvedtypechecking,andnewcommentstyle(//).In1985,thefirsteditionofTheC++ProgrammingLanguagewasreleased,providinganimportantreferencetothelanguage,astherewasnotyetanofficialstandard.In1989,Release2.0ofC++wasreleased.Newfeaturesincludedmultipleinheritance,abstractclasses,staticmemberfunctions,constmemberfunctions,andprotectedmembers.In1990,TheAnnotatedC++ReferenceManualwasreleasedandprovidedthebasisforthefuturestandard.Lateadditionoffeaturesincludedtemplates,exceptions,namespaces,newcasts,andaBooleantype.

AstheC++languageevolved,astandardlibraryalsoevolvedwithit.ThefirstadditiontotheC++standardlibrarywasthestreamI/OlibrarywhichprovidedfacilitiestoreplacethetraditionalCfunctionssuchasprintfandscanf.Later,amongthemostsignificantadditionstothestandardlibrary,wastheStandardTemplateLibrary.

Afteryearsofwork,ajointANSI-ISOcommitteestandardizedC++in1998(ISO/IEC14882:

1998).Forsomeyearsaftertheofficialreleaseofthestandardin1998,thecommitteeprocesseddefectreports,andpublishedacorrectedversionoftheC++standardin2003.

NooneownstheC++language;itisroyalty-free.Thestandarddocumentitselfis,however,notavailableforfree.

✧Futuredevelopment

C++continuestoevolvetomeetfuturerequirements.OnegroupinparticularworkstomakethemostofC++initscurrentformandadvisetheC++standardscommitteewhichfeaturesworkwellandwhichneedimproving:

Boost.org.CurrentworkindicatesthatC++willcapitalizeonitsmulti-paradigmnaturemoreandmore.TheworkatBoost.org,forexample,isgreatlyexpandingC++'sfunctionalandmetaprogrammingcapabilities.TheC++standarddoesnotcoverimplementationofnamedecoration,exceptionhandling,andotherimplementation-specificfeatures,makingobjectcodeproducedbydifferentcompilersincompatible;thereare,however,3rd-partystandardsforparticularmachinesorOSswhichattempttostandardisecompilersonthosepl

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 国外设计风格

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2