C++基础实例教程V2.pdf
《C++基础实例教程V2.pdf》由会员分享,可在线阅读,更多相关《C++基础实例教程V2.pdf(170页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、1.1 C+程 序 结 构(Structure of a program)下面我们从一个最简单的程序入手看一个C+程序的组成结构。/m y f i r s t p r o g r a m i n C+H e l l o W o r l d!#i n c l u d e u s i n g n a m e s p a c e s t d;i n t m a i n()c o u t ”H e l l o W o r l d!w;r e t u r n 0;)上面左侧显示了我们的第一个程序的源代码,代码文件名称为h e l l o w w o r l d.c p p。右边显示了程序被编译执行后的输
2、出结果。编辑和编译一个程序的方法取决于你用的是什么编译器,根据它是否有图形化的界面及版本的不同,编译方法也有可能不同,具体请参照你所使用的编译器的使用说明。以上程序是多数初学者学会写的第一个程序,它的运行结果是在屏幕上打出 H e l l oW o r l d!”这句话。虽然它可能是C+可写出的最简单的程序之一,但其中已经包含了每一个C+程序的基本组成结构。下面我们就逐个分析其组成结构的每一部分:/my first program in C+这是注释行。所有以两个斜线符号(/)开始的程序行都被认为是注释行,这些注释行是程序员写在程序源代码内,用来对程序作简单解释或描述的,对程序本身的运行不会产
3、生影响。在本例中,这行注释对本程序是什么做了一个简要的描述。#include 以#标志开始的句子是预处理器的指示语句。它们不是可执行代码,只是对编译器作出指示。在本例中这个句子#i n c l u d e 告诉编译器的预处理器将输入输出流的标准头文件(i o s t r e a m.h)包括在本程序中。这个头文件包括了 C+中定义的基本标准输入-输出程序库的声明。此处它被包括进来是因为在本程序的后面部分中将用到它的功能。using namespace std;C+标准函数库的所有元素都被声明在一个名空间中,这就是s t d名空间。因此为了能够访问它的功能,我们用这条语句来表达我们将使用标准名空
4、间中定义的元素。这条语句在使用标准函数库的C+程序中频繁出现,本教程中大部分代码例子中也将用到它。int main()这一行为主函数(m a i n f u n c t i o n)的起始声明。m a i n f u n c t i o n 是所有C+程序的运行的起始点。不管它是在代码的开头,结尾还是中间-此函数中的代码总是在程序开始运行时第一个被执行。并且,由于同样的原因,所 有 C+程序都必须有一个m a i n f u n c t i o n。m a i n 后面跟了一对圆括号(),表示它是一个函数。C+中所有函数都跟有一对圆括号0,括号中可以有一些输入参数。如例题中显示,主函数(m a
5、 i n f u n c t i o n)的内容紧跟在它的声明之后,由 花 括 号()括起来。cout ”Hellow World!;这个语句在本程序中最重要。c o u t 是 C+中的标准输出流(通常为控制台,即屏幕),这句话把一串字符串(本例中为“H e l l o W o r l d )插入输出流(控制台输出)中。c o u t在的声明在头文件i o s t r e a m.h 中,所以要想使用c o u t 必须将该头文件包括在程序开始处。注意这个句子以分号(;)结 尾。分号标示了一个语句的结束,C+的每一个语句都必须以分号结尾。(C+程序员最常犯的错误之一就是忘记在语句末尾写上分号
6、)。return 0;返回语句(r e t u r n)引起主函数m a i n()执行结束,并将该语句后面所跟代码(在本例中为0)返回。这是在程序执行没有出现任何错误的情况下最常见的程序结束方式。在后面的例子中你会看到所有C+程序都以类似的语句结束。你可能注意到并不是程序中的所有的行都会被执行。程序中可以有注释行(以开头),有编译器预处理器的指示行(以#开头),然后有函数的声明(本例中m a i n函数),最后是程序语句(例如调用c o u t ),最后这些语句行全部被括在主函数的花括号()内。本例中程序被写在不同的行中以方便阅读。其实这并不是必须的。例如,以下程序i nt m a i n(
7、)(c o u t H e l l o W o r l dr e t u r n 0;)也可以被写成:i nt m a i n()c o u t ”H e l l o W o r l d r e t u r n 0;以上两段程序是完全相同的。在 C+中,语句的分隔是以分号(;)为分隔符的。分行写代码只是为了更方便人阅读。以下程序包含更多的语句:/m y s e c o nd p r o g r a m i n C+H e l l o W o r l d!V m a C+p r o g r a m#i nc l u d e i nt m a i n()c o u t ,zH e l l o W
8、o r l d!z z;c o u t I m a C+p r o g r a m”;r e t u r n 0;在这个例子中,我们在两个不同的语句中调用了 c o u t 函数两次。再一次说明分行写程序代码只是为了我们阅读方便,因为这个m a i n 函数也可以被写为以下形式而没有任何问题:i nt m a i n()c o u t H e l l o W o r l d!;c o u t I m t o C+p r o g r a m ;r e t u r n0;为方便起见,我们也可以把代码分为更多的行来写:i nt m a i n()(c o u t H e l l o W o r l
9、d!;c o u t z,r m a C+p r o g r a mz,;r e t u r n 0;)它的运行结果将和上面的例子完全一样。这个规则对预处理器指示行(以#号开始的行)并不适用,因为它们并不是真正的语句。它们由预处理器读取并忽略,并不会生成任何代码。因此他们每一个必须单独成行,末尾不需要分号(;)注 释(Comments)注释(c o m m e nt s)是源代码的一部分,但它们会被编译器忽略。它们不会生成任何执行代码。使用注释的目的只是使程序员可以在源程序中插入一些说明解释性的内容。C+支持两中插入注释的方法:/l i ne c o m m e nt/*b l o c k c
10、 o m m e nt */第一种方法为行注释,它告诉编译器忽略从开始至本行结束的任何内容。第二种为块注 释(段 注 释),告诉编译器忽略在/*符号和*/符号之间的所有内容,可能包含多行内容。在以下我们的第二个程序中,我们插入了更多的注释。/*m y s e c o nd p r o g r a m i n C+w i t h m o r e c o m m e nt s */H e l l o W o r l d!I m a C+p r o g r a m#i nc l u d e i nt m a i n()(c o u t H e l l o W o r l d!;/s a y s H
11、e l l o W o r l d!c o u t I m a C+p r o g r a m ;/s a y s r m a C+p r o g r a mr e t u r n 0;)如果你在源程序中插入了注释而没有用符号或/*和*/符号,编译器会把它们当成C+的语句,那么在编译时就会出现一个或多个错误信息。1.2 变量和数据类型(Variables and Data types)你可能觉得这个“H e llow W or ld 程序用处不大。我们写了好几行代码,编译,然后执行生成的程序只是为了在屏幕上看到一句话。的确,我们直接在屏幕上打出这句话会更快。但是编程并不仅限于在屏幕上打出文字这
12、么简单的工作。为了能够进一步写出可以执行更有用的任务的程序,我们需要引入变量(v a r i a b le)这个的概念。让我们设想这样一个例子,我要求你在脑子里记住5 这个数字,然后再记住2 这个数字。你已经存储了两个数值在你的记忆里。现在我要求你在我说的第一个数值上加1,你应该保留6 (即5+1)和 2 在你的记忆里。现在如果我们将两数相减可以得到结果4。所有这些你在脑子里做的事情与计算机用两个变量可以做的事情非常相似。同样的处理过程用C+来表示可以写成下面一段代码:a =5;b =2;a =a +1;r e s u lt =a -b;很明显这是一个很简单的例子,因为我们只用了两个小的整数数
13、值。但是想一想你的电脑可以同时存储成千上万这样的数值,并进行复杂的数学运算。因此,我们可以将变量(v a r i a b le)定义为内存的一部分,用以存储一个确定的值。每一个变量(v a r i a b le)需要-个标识,以便将它与其他变量相区别,例如,在前面的代码中,变量标识是a,b,和r e s u lt。我们可以给变量起任何名字,只要它们是有效的标识符。标 识(Identifiers)有效标识由字母(le t t e r),数字(d i g i t s)和下划线(_)组成。标识的长度没有限制,但是有些编译器只取前3 2 个字符(剩下的字符会被忽底)。空格(s p a c e s),标
14、 m(p u nc t u a t i on ma r ks)和符号(s y mb ols)都不可以出现在标识中。只有字母(le t t e r s),瓣(d i g i t s)和下划线(_)是合法的。并且变量标识必须以字母开头。标识也可能以下划线(_)开头,但这种标识通常是保留给为外部连接用的。标识不可以以数字开头。必须注意的另一条规则是当你给变量起名字时不可以和C+语言的关键字或你所使用的编译器的特殊关键字同名,因为这样与这些关键字产生混淆。例如,以下列出标准保留关键字,他们不允许被用作变量标识名称:a sm,a uto,b ool,b rea k,c a se,c a tc h,c h
15、a r,c la ss,c onst,c onst_ c a st,c ontinue,defa ult,delete,do,doub le,dyna mic _ c a st,else,enum,explic it,extern,fa lse,floa t,for,friend,goto,if,inline,int,long,muta b le,na mespa c e,new,opera tor,priva te,protec ted,pub lic,register,reinterpret_ c a st,return,short,signed,sizeof,sta tic,sta ti
16、c _ c a st,struc t,switc h,templa te,this,throw,true,try,typedef,typeid,typena me,union,unsigned,using,virtua l,void,vola tile,wc ha r_ t,while另外,不要使用一些操作符的替代表示作为变量标识,因为在某些环境中它们可能被用作保留词:a nd,a nd_ eq,b ita nd,b itor,c ompl,not,not_ eq,or,or_ eq,xor,xor_ eq你的编译器还可能包含一些特殊保留词,例如许多生成16位码的编译器(比如一些DOS编 译
17、器)把fa r,huge和nea r也作为关键字。非常重要:C+语言是“大小写敏感”(“c a se sensitive)的,即同样的名字字母大小写不同代表不同的变量标识。因此,例如变量RESULT,变量result和变量Result分别表示三个不同的变量标识.基本数据类型(Fundamental Data types)编程时我们将变量存储在计算机的内存中,但是计算机要知道我们要用这些变量存储什么样的值,因为一个简单的数值,一个字符,或一个巨大的数值在内存所占用的空间是不一样的。计算机的内存是以字节(b yte)为单位组织的。一个字节(b yte)是我们在C+中能够操作的最小的内存单位。一个字
18、节(b yte)可以存储相对较小数据:一个单个的字符或一个小整数(通常为一个0到255之间的整数)。但是计算机可以同时操作处理由多个字节组成复杂数据类型,比如长整数(long integers)和小数(dec ima ls)。以下列表总结了现有的C+基本数据类型,以及每一类型所能存储的数据范围:数据类型(DATA TYPES)名称字节数*描述范围*ch a r1字 符(ch a r a ct er)或整数(i n t eg er ),8 位(b i t s)长有符号(s i g n ed):-1 2 8 到 1 2 7无符号(u n s i g n ed):0 到 2 5 5s h o r t
19、 i n t(s h o r t)2短整数(i n t eg er )1 6 位(b i t s)长有符号(s i g n ed):-3 2 7 6 8 到3 2 7 6 7无襦 (u n s i g n ed):0 到 6 5 5 3 5l o n g i n t(l o n g)4长整数(i n t eg er )3 2 位(b i t s)长有符号(s i g n ed):-2 1 4 7 4 8 3 6 4 8到 2 1 4 7 4 8 3 6 4 7无符号(u n s i g n ed):0到4 2 9 4 9 6 7 2 9 5i n t4整 数(i n t eg er)有符号(s
20、 i g n ed):-2 1 4 7 4 8 3 6 4 8到 2 1 4 7 4 8 3 6 4 7无符号(u n s i g n ed):0到4 2 9 4 9 6 7 2 9 5f l o a t4浮点数(f l o a t i n g po i n t n u m b er)3.4 e+/-3 8 (7 个数字(7 d i g i t s)d o u b l e8双精度浮点数(d o u b l e pr eci s i o nf l o a t i n g po i n t n u m b er)1.7 e+/-3 0 8 (1 5 d i g i t s)l o n gd o u
21、 b l e8长双精度浮点数(l o n g d o u b l epr eci s i o n f l o a t i n g po i n t n u m b er)1.7 e+/-3 0 8 (1 5 d i g i t s)b o o l1布尔B o o l ea n 值。它只能是真(t r u e)或假(f a l s e)两值之一。t r u e 或 f a l s ew ch a r _ t2宽字符(W i d e ch a r a ct er)。这是为存储两字节(2 b y t es)长的国际字符而设计的类型。一 个 宽字符(1 w i d ech a r a ct er s)
22、*字节数一列和范围一列可能根据程序编译和运行的系统不同而有所不同。这里列出的数值是多数3 2 位系统的常用数据。对于其他系统,通常的说法是整型(i n t)具有根据系统结构建议的自然长度(即一个字o n e w o r d 的长度),而4中整型数据ch a r,s h o r t,i n t,l o n g 的长度必须是递增的,也就是说按顺序每一类型必须大于等于其前面一个类型的长度。同样的规则也适用于浮点数类型fl o a t,d o u b l e 和 l o n g d o u b l e,也是按递增顺序。除以上列出的基本数据类型外,还有指针(p o i n t e r)和 v o i d
23、 参数表示类型,我们将在后面看到。变量的声明(Declaration of variables)在C+中要使用一个变量必须先声明(dec la re)该变量的数据类型。声明一个新变量的语法是写出数据类型标识符(例如int,short,floa t.)后面跟一个有效的变量标识名称。例如:int a;floa t mynumb er;以上两个均为有效的变量声明(va ria b le dec la ra tion)第一个声明一个标识为a的整型变量(int va ria b le),第二个声明一个标识为mynumb er的浮点型变量(floa tva ria b le)o声明之后,我们就可以在后面的
24、程序中使用变量a和mynumb er 了。如果你需要声明多个同一类型的变量,你可以将它们缩写在同一行声明中,在标识之间用逗号(c omma)分隔。例如:int a,b,c;以上语句同时定义了 a、b、c 3个整型变量,它与下面的写法完全等同:int a;int b;int c;整型数据类型(c ha r,short,long和int)可以是有符号的(signed)或无符号的(unsigned),这取决于我们需要表示的数据范围。有符号类型(signed)可以表示正数和负数,而无符号类型(unsigned)只能表示正数和0。在定义一个整型数据变量时可以在数据类型前面加关键字signed或unsig
25、ned来声明数据的符号类型。例如:unsigned short Numb erOfSons;signed int MyAc c ountBa la nc e;如果我们没有特别写出signed或unsigned,变量默认为signed,因此以上第二个声明我们也可以写成:int MyAc c ountBa la nc e;因为以上两种表示方式意义完全一样,因此我们在源程序通常省略关键字signed o唯 一 -的例外是字符型(c ha r)变量,这种变量独立存在,与signed c ha r和unsigned c ha r型均不相同。short和long可以被单独用来表示整型基本数据类型,shor
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 基础 实例教程 V2
限制150内