C++基础教程1.pdf
《C++基础教程1.pdf》由会员分享,可在线阅读,更多相关《C++基础教程1.pdf(90页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C+基础教程C+基础知识(B a s i c s o f C+)1.1 C+程 序 结 构(Structure of a program)下面我们从一个最简单的程序入手看一个C+程序的组成结构。/my first program in C+Hello World!#include using namespace std;int main()cout ”Hello World!”;return 0;左边程序的源代码文件名称为hellow orld.cppo右边显示了程序被编译执行后的输出结果。以上程序的运行结果是在屏幕上打出“Hello W orld!这句话。虽然它是C+可写出的最简单的程序之但
2、其中已经包含了每一个C+程序的基本组成结构。下面我们就逐个分析其组成结构的每一部分:/my first program in C+这是注释行。所有以两个斜线符号(/)开始的程序行都被认为是注释行,这些注释行是程序员写在程序源代码内,用来对程序作简单解释或描述的,对程序本身的运行不会产生影响。在本例中,这行注释对本程序是什么做了一个简要的描述。#include 以#标志开始的句子是预处理器的指示语句。它们不是可执行代码,只是对编译器作出指示。在本例中这个句子#includeiostream.h 告诉编译器的预处理器将输入输出流的标准头文件(iostream.h)包括在本程序中。这个头文件包括了
3、C+中定义的基本标准输入-输出程序库的声明。此处它被包括进来是因为在本程序的后面部分中将用到它的功能。using namespace std;C+标准函数库的所有元素都被声明在一个名空间中,这就是s td 名空间。因此为了能够访问它的功能,我们用这条语句来表达我们将使用标准名空间中定义的元素。这条语句在使用标准函数库的C+程序中频繁出现,本教程中大部分代码例子中也将用到它。int main()这一行为主函数(main function)的起始声明。main function是所有C+程序的运行的起始点。不管它是在代码的开头,结尾还是中间-此函数中的代码总是在程序开始运行时第一个被执行。并且,由
4、于同样的原因,所有C+程序都必须有一个main function。m ain后面跟了一对圆括号(),表示它是一个函数。C+中所有函数都跟有一对圆括号(),括号中可以有一些输入参数。如例题中显示,主函数(main function)的内容紧跟在它的声明之后,山花 括 号()括起来。cout Hellow World!”;这个语句在本程序中最重要。cout是 C+中的标准输出流(通常为控制台,即屏幕),这句话把一串字符串(本例中为“Hello World”)插入输出流(控制台输出)中。cout在的声明在头文件iostream.h中,所以要想使用cout必须将该头文件包括在程序开始处。注意这个句子以
5、分号(;)结 尾。分号标示了一个语句的结束,C+的每一个语句都必须以分号结尾。(C+程序员最常犯的错误之一就是忘记在语句末尾写上分号)。return 0;返回语句(return)引起主函数main()执行结束,并将该语句后面所跟代码(在本例中为0)返回。这是在程序执行没有出现任何错误的情况下最常见的程序结束方式。在后面的例子中你会看到所有C+程序都以类似的语句结束。你可能注意到并不是程序中的所有的行都会被执行。程序中可以有注释行(以开头),有编译器预处理器的指示行(以#开头),然后有函数的声明(本例中main函数),最后是程序语句(例如调用co u t ),最后这些语句行全部被括在主函数的花括
6、号(什)内。本例中程序被写在不同的行中以方便阅读。其实这并不是必须的。例如,以下程序int main()(cout ”Hello World”;return 0;)也可以被写成:int main()cout Hello World return 0;以上两段程序是完全相同的。在 C+中,语句的分隔是以分号(;)为分隔符的。分行写代码只是为了更方便人阅读。以下程序包含更多的语句:/my second program in C+Hello World!Pm a C+program#include int main()(cout Hello World!cout Im a C+program1;re
7、turn 0;在这个例子中,我们在两个不同的语句中调用了 cout 函数两次。再一次说明分行写程序代码只是为了我们阅读方便,因为这个main函数也可以被写为以下形式而没有任何问题:int main()cout Hello World!cout *Im to C+program return 0;为方便起见,我们也可以把代码分为更多的行来写:int main()(coutnHello World!1;cout Fm a C+program;return 0;)它的运行结果将和上面的例子完全一样。这个规则对预处理器指示行(以#号开始的行)并不适用,因为它们并不是真正的语句。它们由预处理器读取并忽略
8、,并不会生成任何代码。因此他们每一个必须单独成行,末尾不需要分号(;)注 释(Comments)注释(comments)是源代码的一部分,但它们会被编译器忽略。它们不会生成任何执行代码。使用注释的目的只是使程序员可以在源程序中插入一些说明解释性的内容。C+支持两中插入注释的方法:/line comment/*block comment*/第一种方法为行注释,它告诉编译器忽略从开始至本行结束的任何内容。第二种为块注释(段注释),告诉编译器忽略在/*符号和*/符号之间的所有内容,可能包含多行内容。在以下我们的第二个程序中,我们插入了更多的注释。/*my second program in C+He
9、llo World!Im a C+programwith more comments*/#include int main()cout Hello World!”;says Hello World!cout Im a C+program”;says Im a C+programreturn 0;)如果你在源程序中插入了注释而没有用符号或/*和*/符号,编译器会把它们当成C+的语句,那么在编译时就会出现一个或多个错误信息。1.2 变量,数据类型,常 量(Variables.Data types.Constants)为了能够进一步写出可以执行更有用的任务的程序,我们需要引入变量(v a r i a
10、 b l e)这个的概念。让我们设想这样一个例子,我要求你在脑子里记住5这个数字,然后再记住2这个数字。你已经存储了两个数值在你的记忆里。现在我要求你在我说的第一个数值上加1,你应该保留6 (即5+1)和2在你的记忆里。现在如果我们将两数相减可以得到结果4。所有这些你在脑子里做的事情与计算机用两个变量可以做的事情非常相似。同样的处理过程用C+来表示可以写成下面一段代码:a=5;b=2;a=a+1;result=a-b;我们可以将变量(v a r i a b l e)定义为内存的一部分,用以存储一个确定的值。每 一 个 变 量(v a r i a b l e)需要一个标识,以便将它与其他变量相区
11、别,例如,在前面的代码中,变量标识是a,b,和r e s u l t。我们可以给变量起任何名字,只要它们是有效的标识符。标 识(Identifiers)有效标识由字母(l e t t e r),数字(d i g i t s)和下划线(一)组成。标识的长度没有限制,但是有些编译器只取前32个字符(剩下的字符会被忽略)。空格(s p a c e s),标点(p u nc t u a t i on m a r k s)和符号(s y m b ol s)都不可以出现在标识中。只有字母(l e t t e r s),数字(d i g i t s)和下划线(。是合法的。并且变量标识必须以字母开头。标识也可
12、能以下划线(_)开头,但这种标识通常是保留给为外部连接用的。标识不可以以数字开头。必须注意的另一条规则是当你给变量起名字时不可以和C+语言的关键字或你所使用的编译器的特殊关键字同名,因为这样与这些关键字产生混淆。例如,以下列出标准保留关键字,他们不允许被用作变量标识名称:asm,auto,bool,break,case,catch,char,class,const,const_cast,continue,default,de I etef do,doub I et dynamic_cast,else,enum,expl ic it,extern,false,flo at,for,friend,
13、goto,if,inline,int,long,mutable,namespace,new,operator,private,protected,pub I ict register,re i nterpret_cast,return,short,signed,s i zeof t stat i c,stat i c_cast,struct,switch,temp I ate,this,throw,true,try,typedef,type id,typename,unionf unsigned,using,virtu al,void,vo latile,wchar_t,while另外,不要使
14、用一些操作符的替代表示作为变量标识,因为在某些环境中它们可能被用作保留词:and,and_eqt bitand,b ifo rt comp I,not,not_eq,or,or_eq,xor,xor_eq你的编译器还可能包含一些特殊保留词,例如许多生成16位码的编译器(比如一些D O S编 译 器)把f a r,h u g e和ne a r也作为关键字。非常重要:C+语 言 是“大小写敏感”(“c a s e s e ns i t i v e )的,即同样的名字字母大小写不同代表不同的变量标识。因此,例如变量R E S UL T,变量r e s u l t和变量R e s u l t分别表示三
15、个不同的变量标识.基本数据类型(Fundamental Data types)编程时我们将变量存储在计算机的内存中,但是计算机要知道我们要用这些变量存储什么样的值,因为一个简单的数值,一个字符,或一个巨大的数值在内存所占用的空间是不一样的。计算机的内存是以字节(b y t e)为单位组织的。一个 字 节(b y t e)是我们在C+中能够操作的最小的内存单位。一个字节(b y t e)可以存储相对较小数据:一个单个的字符或一个小整数(通常为一个0到255之间的整数)。但是计算机可以同时操作处理由多个字节组成复杂数据类型,比如长整数(l ong i nt e g e r s)和小 数(d e c
16、 i m a l s)。以下列表总结了现有的C+基本数据类型,以及每一类型所能存储的数据范围:数据类型(D A T A T Y P E S)名称字节数描述范围char1字 符(character)或整数(integer),8位(b its)长有 符 号(signed):-128 到 127无 符 号(unsigned):0 到 255short int(short)2短 整 数(integer)16 位(b its)长有 符 号(signed):-32768 到32767无符号(unsigned):0 至 IJ 65535long int(long)4长 整 数(integer)32 位(b
17、its)长有符号(signed):-2147483648 到2147483647无 符 号(unsigned):0到4294967295int4整 数(integer)有符号(signed):-2147483648 到2147483647无 符 号(unsigned):0到4294967295float4浮 点 数(floating point number)3.4e+/-38(7 个数字(7digits)double8双精度浮点数(double precision floatingpoint number)1.7e+/-308(15 digits)longdouble8长双精度浮点数(lon
18、g double precisionfloating point number)1.7e+/-308(15 digits)bool1布尔Boolean值。它只能是真(true)或假(false)两值之一。true 或 falsewchar_t2宽字符(Wide character)。这是为存储两字节(2 bytes)长的国际字符而设计的类型。个宽字符(1 wide characters)*字节数列和范围一列可能根据程序编译和运行的系统不同而有所不同。这里列出的数值是多数32位系统的常用数据。对于其他系统,通常的说法是整型(i n t)具有根据系统结构建议的自然长度(即一个字。n e w or
19、d的长度),而 4 中整型数据ch a r,s h or t,i n t,l on g 的长度必须是递增的,也就是说按顺序每一类型必须大于等于其前面一个类型的长度。同样的规则也适用于浮点数类型f l oa t,dou b l e和 l on g dou b l e,也是按递增顺序。除以上列出的基本数据类型外,还有指针(poi n t er)和 v oi d参数表示类型,我们将在后面看到。变 量 的 声 明(Declaration of variables)在 C+中要使用一个变量必须先声明(decl a r e)该变量的数据类型。声明一个新变量的语法是写出数据类型标识符(例如i n t,s h
20、 or t,f l oa t.)后面跟一个有效的变量标识名称。例如:int a;float mynumber;以上两个均为有效的变量声明(variable declaration)。第一个声明一个标识为 a 的整型变量(int variable),第二个声明一个标识为mynumber的浮点型变量(float variable)o声明之后,我们就可以在后面的程序中使用变量a 和mynumber 了。如果你需要声明多个同一类型的变量,你可以将它们缩写在同一行声明中,在标识之间用逗号(comma)分隔。例如:int a,b,c;以上语句同时定义了 a、b、c 3 个整型变量,它与下面的写法完全等同:
21、int a;int b;int c;整型数据类型(char,short,long和 int)可以是有符号的(signed)或无符号 的(unsigned),这取决于我们需要表示的数据范围。有符号类型(signed)可以表示正数和负数,而无符号类型(unsigned)只能表示正数和0。在定义一个整型数据变量时可以在数据类型前面加关键字signed或 unsigned来声明数据的符号类型。例如:unsigned short NumberOfSons;signed int MyAccountBalance;如果我们没有特别写出signed或 unsigned,变量默认为signed,因此以上第二个声
22、明我们也可以写成:int MyAccountBalance;因为以上两种表示方式意义完全一样,因此我们在源程序通常省略关键字signed。唯一的例外是字符型(char)变量,这种变量独立存在,与 signed char和unsigned char型均不相同。short和 long可以被单独用来表示整型基本数据类型,short相当于shortint,long 相当于 long into 也就是说 short year;和 short int year;两种声明是等价的。最后,signed和 unsigned也可以被单独用来表示简单类型,意思分别同signed int和 unsigned int相
23、同,即以下两种声明互相等同:unsigned MyBirthYear;unsigned int MyBirthYear;下面我们就用C+代码来解决在这一节开头提到的记忆问题,来看一下变量定义是如何在程序中起作用的。/operating with variables 4#include using namespace std;int main()(/declaring variables:int a,b;int result;/process:a=5;b=2;a=a+1;result=a-b;/print out the result:cout result;/terminate the pro
24、gram:return 0;如果以上程序中变量声明部分有你不熟悉的地方,不用担心,我们在后面的章节中很快会学到这些内容。变量初始化(Initialization of variables)当一个本地变量(local variable)被声明时,它的值默认为未定(undetermined)。但你可能希望在声明变量的同时赋给它一个具体的值。要想达到这个目的,需要对变量进行初始化。C+中有两种初始化方法:第一种,又叫做类C (c-like)方法,是在声明变量的时候加上一个等于号,并在后面跟上想要的数值:type identifier=initial_value;例如,如果我们想声明一个叫做a的 i
25、n t变量并同时赋予它0 这个值,我们可以这样写:int a=0;另外一种变量初始化的方法,又叫做构造函数(c o n str uc to r)初始化,是将初始值用小括号(p a r e n th e si s()括起来:type identifier(initial_value);例如:int a(0);在 C+.中以上两种方法都正确并且两者等同。变量的范围(Scope of variables)所有我们要使用的变量都必须事先声明过。c和C+语言的一个重要区别是,在C+语言中我们可以在源程序中任何地方声明变量,甚至可以在两个可执行(e x c uta b l e)语句的中间声明变量,而不象在
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 基础教程
限制150内