《C++语法大全.ppt》由会员分享,可在线阅读,更多相关《C++语法大全.ppt(142页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、主要内容13.1 3.1 数据类型数据类型 23.2 3.2 常量和变量常量和变量 33.3 3.3 运算符和表达式运算符和表达式43.4 3.4 语句语句 53.5 3.5 小结小结3.1 数据类型n程序中的各种加工和处理都是针对某程序中的各种加工和处理都是针对某些数据进行的,这些数据由数据类型些数据进行的,这些数据由数据类型描述。数据类型规定了数据的存储结描述。数据类型规定了数据的存储结构(在内存中占据的大小和布局)、构(在内存中占据的大小和布局)、可以进行的运算、取值范围。可以进行的运算、取值范围。C+C+中的数据类型大致分为三类:中的数据类型大致分为三类: C+C+预定义的一组内置的基
2、本数据类型,预定义的一组内置的基本数据类型,表示常见的简单数据,如整数、浮点数等;表示常见的简单数据,如整数、浮点数等; 复合类型,由基本数据类型组合而成的更复合类型,由基本数据类型组合而成的更复杂的数据类型,如数组、结构体、联合、复杂的数据类型,如数组、结构体、联合、枚举等;枚举等; 类类型,即用户自己定义的抽象数据类型。类类型,即用户自己定义的抽象数据类型。为了方便程序员,为了方便程序员,C+C+标准库中还提供的标准库中还提供的一些常用的抽象数据类型。一些常用的抽象数据类型。2常量和变量3运算符和表达式4语句5小结数据类型13.1.1 内置数据类型n字符类型字符类型 字符型字符型charc
3、har,通常用来表示单个字符和小整数。,通常用来表示单个字符和小整数。n整数类型整数类型 整型整型intint、短整型、短整型shortshort、长整型、长整型longlong,分别代表不,分别代表不同长度的整数值同长度的整数值 charchar、shortshort、intint和和longlong类型都可以用类型都可以用signedsigned和和unsignedunsigned修饰修饰n浮点类型浮点类型 浮点型浮点型floatfloat、双精度浮点型、双精度浮点型doubledouble和长双精度和长双精度long doublelong doublen布尔类型布尔类型 boolbool
4、类型只有两个值:类型只有两个值:truetrue和和falsefalse。-nboolbool类型、类型、charchar类型、各种整数类型通称为类型、各种整数类型通称为整值类型。整值类型和浮点类型一起被称为整值类型。整值类型和浮点类型一起被称为算术类型。算术类型。2常量和变量3运算符和表达式4语句5小结数据类型1 内置数据类型 指针类型 引用类型 数组 结构体 联合 枚举 类类型内置数据类型的空间大小 n标准标准C+C+对内置数据类型的空间大小并没有做对内置数据类型的空间大小并没有做出严格规定,出严格规定, 但为了编写可移植的代码,应但为了编写可移植的代码,应该了解你所使用的编译器和机器,避
5、免对这该了解你所使用的编译器和机器,避免对这些特性做出某种假定。些特性做出某种假定。 n如下代码可以测试如下代码可以测试C+C+编译器为每种数据类型编译器为每种数据类型分配的空间大小:分配的空间大小: 2常量和变量3运算符和表达式4语句5小结数据类型1 内置数据类型 指针类型 引用类型 数组 结构体 联合 枚举 类类型#include using namespace std;int main( )cout sizeof(char) endl; cout sizeof(int) endl;cout sizeof(float) endl;cout sizeof(double) endl;cout
6、sizeof(bool) endl; return 0;Visual C+ 6.0和和DEV-C+结结果:果:144813.1.2 指针类型 n指针持有一个对象的地址,通过指针可以间指针持有一个对象的地址,通过指针可以间接操作这个对象。指针的典型用法接操作这个对象。指针的典型用法: : 构建链式的数据结构,如链表和树 管理程序执行时动态分配的对象 作为函数的参数n每个指针都有相关的类型,需要在定义指针每个指针都有相关的类型,需要在定义指针时指出。不同类型的指针的表示方法和保存时指出。不同类型的指针的表示方法和保存的地址值并没有分别,区别只是在于指针指的地址值并没有分别,区别只是在于指针指向的对
7、象类型不同。指针的类型指出了如何向的对象类型不同。指针的类型指出了如何解释该内存地址保存的内容,以及该内存区解释该内存地址保存的内容,以及该内存区域应该有多大。例如:域应该有多大。例如: int int * *pi; /pi; /指向整型的指针,如指向内存地指向整型的指针,如指向内存地址是址是10001000,则跨越的地址空间是,则跨越的地址空间是1000100010031003 char char * *pc;/pc;/指向字符型的指针,如指向内存指向字符型的指针,如指向内存地址是地址是10001000,则只占据,则只占据10001000这个字节的区域这个字节的区域2常量和变量3运算符和表达
8、式4语句5小结数据类型1 内置数据类型 指针类型 引用类型 数组 结构体 联合 枚举 类类型空指针n指针值为指针值为0 0时表示它不指向任何对象,时表示它不指向任何对象,即空指针。指针不能保存非地址值,即空指针。指针不能保存非地址值,也不能被赋值或初始化为不同类型的也不能被赋值或初始化为不同类型的地址值。地址值。2常量和变量3运算符和表达式4语句5小结数据类型1 内置数据类型 指针类型 引用类型 数组 结构体 联合 枚举 类类型int ival = 100;int *pi = &ival; / pi 被初始化为ival的地址int *pi2 = 0; /pi2不指向任何对象pi2 = ival
9、;/编译错误double dval = 1.5;pi = &dval;/编译错误通用指针nC+C+提供了一种通用指针,即提供了一种通用指针,即voidvoid* *指针,指针,它可以持有任何类型的地址值。不能操纵它可以持有任何类型的地址值。不能操纵voidvoid指针指向的对象,只能传送该地址值指针指向的对象,只能传送该地址值或和其他地址进行比较。或和其他地址进行比较。C+C+也不允许也不允许voidvoid指 针 到 其 他 类 型 指 针 的 直 接 赋 值 。指 针 到 其 他 类 型 指 针 的 直 接 赋 值 。2常量和变量3运算符和表达式4语句5小结数据类型1 内置数据类型 指针类
10、型 引用类型 数组 结构体 联合 枚举 类类型int a = 10;char ch = k;void* pv = &a;/OKpv = &ch;/OKint* pi = pv;/错误,应该使用pi = (int*) pvn通过解引用操作(通过解引用操作(* *)可以间接访问指针指)可以间接访问指针指向的对象。向的对象。int x = 100, y = 20;int *pi = &x;*pi = y;/ x = y指针的算术运算n指针可以进行加或减整数值的算术指针可以进行加或减整数值的算术运算,这时地址值增加数目取决于运算,这时地址值增加数目取决于指针的类型。指针只有在指向数组指针的类型。指针只
11、有在指向数组元素时,其算术运算才有意义。元素时,其算术运算才有意义。2常量和变量3运算符和表达式4语句5小结数据类型1 内置数据类型 指针类型 引用类型 数组 结构体 联合 枚举 类类型int a = 10;char ch = k;int* pi = &a;char* pc = &ch;pi+; /在原地址值上加在原地址值上加4;因为;因为int占占4个字节个字节pc+; /在原地址值上加在原地址值上加1;因为;因为char占占1个字节个字节3.1.3 引用类型n引用又称为别名,它可以作为对象的另引用又称为别名,它可以作为对象的另一个名字。通过引用我们可以间接操纵一个名字。通过引用我们可以间接
12、操纵对象,使用方式类似于指针,但是不需对象,使用方式类似于指针,但是不需要指针的语法。在程序中,引用主要用要指针的语法。在程序中,引用主要用作函数的作函数的形参形参。n引用由类型标识符和一个取地址符(引用由类型标识符和一个取地址符(& &)来定义,引用必须被初始化。来定义,引用必须被初始化。2常量和变量3运算符和表达式4语句5小结数据类型1 内置数据类型 指针类型 引用类型 数组 结构体 联合 枚举 类类型int ival = 100;/OK,refVal是指向是指向ival的引用的引用int &refVal = ival; /Error,引用没有初始化引用没有初始化int &refVal2;
13、 /Error,不能用对象的地址来初始化引用,不能用对象的地址来初始化引用int &refVal3 = &ival; int &refVal4 = 10; /Error,不能用没有内存地址的数值来初始化引用不能用没有内存地址的数值来初始化引用引用的注意事项(1)n引用一旦定义,就不能再指向其他的引用一旦定义,就不能再指向其他的对象,对引用的所有操作都会被应用对象,对引用的所有操作都会被应用在它所指向的对象上。例如:在它所指向的对象上。例如: int x = 100, y = 20;int x = 100, y = 20; int &r = x; int &r = x;/ r/ r是是x x的引
14、用的引用 r = y;r = y;/r/r不是不是y y的引用,而是的引用,而是x = yx = y2常量和变量3运算符和表达式4语句5小结数据类型1 内置数据类型 指针类型 引用类型 数组 结构体 联合 枚举 类类型引用的注意事项(2)n注意引用的初始化和赋值极为不同:初始化时注意引用的初始化和赋值极为不同:初始化时引用引用“指向指向”一个对象,赋值时,引用被作为一个对象,赋值时,引用被作为所指对象的别名。所指对象的别名。虽然虽然C+C+标准没有规定引用的实现方式,但是标准没有规定引用的实现方式,但是在很多在很多C+C+编译器中,引用被实现为与所指对编译器中,引用被实现为与所指对象占据同一地
15、址空间,例如下面的代码:象占据同一地址空间,例如下面的代码:#include using namespace std;int main() int a = 10; int& ra = a; couta=at&a=&aendl; coutra=rat&ra=&raendl; ra = 20; couta=at&a=&aendl; coutra=rat&ra=&raendl;在在GNU C+编译环境编译环境的输出结果如下:的输出结果如下: a=10&a=0 x22ff34ra=10&ra=0 x22ff34a=20&a=0 x22ff34ra=20&ra=0 x22ff342常量和变量3运算符和表
16、达式4语句5小结数据类型1 内置数据类型 指针类型 引用类型 数组 结构体 联合 枚举 类类型引用与指针的差别(1)n定义与初始化定义与初始化指针的定义形式:类型 *指针变量;指针的初始化:int x = 10, y = 20;int *pi; /可以不初始化pi = &x; /p 指向int 类型的对象xpi = &y; /p 也可以重新指向y引用的定义形式:类型 &引用名 = 初始值;引用的初始化:定义引用时必须用有内存地址的对象初始化。引用在初始化之后,一直指向该对象。例如:int a = 10, b=20;int &ri = a; /必须初始化ri = b; /等同于a=b;2常量和变
17、量3运算符和表达式4语句5小结数据类型1 内置数据类型 指针类型 引用类型 数组 结构体 联合 枚举 类类型引用与指针的差别(2)n使用方式使用方式指针通过解引用(*)运算间接访问指向的对象;引用作为对象的别名,可以直接访问对象。例如:pi = &x;*pi = 30; / x=30int &ri = a;ri = 40; /a=402常量和变量3运算符和表达式4语句5小结数据类型1 内置数据类型 指针类型 引用类型 数组 结构体 联合 枚举 类类型引用与指针的差别(3)n指针可以不指向任何对象,引用必指针可以不指向任何对象,引用必须指向一个对象。须指向一个对象。pi = 0; /pi是空指针
18、,不指向任何对象ri = 0; / a=02常量和变量3运算符和表达式4语句5小结数据类型1 内置数据类型 指针类型 引用类型 数组 结构体 联合 枚举 类类型引用与指针的差别(4)n指针之间的相互赋值会改变指向关指针之间的相互赋值会改变指向关系;引用之间的相互赋值是它们指系;引用之间的相互赋值是它们指向的对象之间的赋值,引用关系本向的对象之间的赋值,引用关系本身并不改变。身并不改变。int x = 100, y = 20;int *p1 = &x, *p2 = &y;p1 = p2; / p1=&y, p1 和p2 都指向yint &r1 = x, &r2 = y;r1 = r2; / x
19、y, r1 仍是x 的引用2常量和变量3运算符和表达式4语句5小结数据类型1 内置数据类型 指针类型 引用类型 数组 结构体 联合 枚举 类类型3.1.4 数组n数组是一个单一数据类型对象的集数组是一个单一数据类型对象的集合。其中的单个对象没有命名,但合。其中的单个对象没有命名,但可以通过它在数组中的位置进行访可以通过它在数组中的位置进行访问,即下标访问。例如:问,即下标访问。例如: /ia/ia是包含是包含1010个个intint对象的数组对象的数组 int ia10; int ia10; / /数组中下标为数组中下标为3 3的元素被赋值为的元素被赋值为7 7 ia3 = 7; ia3 =
20、7; 2常量和变量3运算符和表达式4语句5小结数据类型1 内置数据类型 指针类型 引用类型 数组 结构体 联合 枚举 类类型定义数组n定义数组时需要指定定义数组时需要指定类型名类型名、数组名数组名标识符标识符和和数组大小数组大小。数组大小是一个。数组大小是一个不小于不小于1 1的常量表达式。数组元素的的常量表达式。数组元素的下标从下标从0 0开始,到数组大小开始,到数组大小1 1。但是,。但是,C+C+并不提供对数组下标范围的检查,并不提供对数组下标范围的检查,需 要 程 序 员 自 己 保 证 正 确 性 。需 要 程 序 员 自 己 保 证 正 确 性 。n定义数组的同时可以对数组进行初始
21、定义数组的同时可以对数组进行初始化,初始值放在花括号中,用逗号隔化,初始值放在花括号中,用逗号隔开。开。 int ia3 = 1, 2, 3;int ia3 = 1, 2, 3; int ib = 4, 5, 6, 7; int ib = 4, 5, 6, 7; int ic10 = 0, 1, 2; int ic10 = 0, 1, 2;2常量和变量3运算符和表达式4语句5小结数据类型1 内置数据类型 指针类型 引用类型 数组 结构体 联合 枚举 类类型数组的注意事项n一个数组不能被另一个数组初始化,一个数组不能被另一个数组初始化,也不能被直接赋值给另一数组。也不能被直接赋值给另一数组。C+
22、C+也不允许声明一个引用数组,例如:也不允许声明一个引用数组,例如: int ia3=1,2,3; int ia3=1,2,3; int ib=ia; /!Error int ib=ia; /!Error int &ria=ia; /!Error int &ria=ia; /!Error int ival1=0,ival2=1; int ival1=0,ival2=1; int &r2=a,b; /!Error int &r2=a,b; /!Error int &rv1=ival1,&rv2=ival2; int &rv1=ival1,&rv2=ival2; int rv2=rv1,rv2;
23、/OK int rv2=rv1,rv2; /OK2常量和变量3运算符和表达式4语句5小结数据类型1 内置数据类型 指针类型 引用类型 数组 结构体 联合 枚举 类类型C风格字符串nC+C+保留了保留了C C语言中用字符数组表示语言中用字符数组表示字符串的方式,称为字符串的方式,称为C C风格字符串。风格字符串。可以通过库函数对这样的字符串进可以通过库函数对这样的字符串进行操作。行操作。n需要包含标准库头文件需要包含标准库头文件2常量和变量3运算符和表达式4语句5小结数据类型1 内置数据类型 指针类型 引用类型 数组 结构体 联合 枚举 类类型多维数组n定义多维数组,每一维的大小由一定义多维数组
24、,每一维的大小由一对方括号指定。例如:对方括号指定。例如: int ia43; int ia43; n访问多维数组的元素要指定每一维访问多维数组的元素要指定每一维的下标。例如:的下标。例如: ia12 = 5;ia12 = 5;n多维数组也可以被初始化:多维数组也可以被初始化: int ia32 = int ia32 = 0, 1, 0, 1, 2, 3, 2, 3, 4, 5 4, 5 ; ;2常量和变量3运算符和表达式4语句5小结数据类型1 内置数据类型 指针类型 引用类型 数组 结构体 联合 枚举 类类型数组与指针n数组名字代表数组第一个元素的地址,它数组名字代表数组第一个元素的地址,它
25、的类型是数组元素类型的指针。例如对下的类型是数组元素类型的指针。例如对下面的数组定义:面的数组定义: int ia5;int ia5;niaia是一个是一个intint* *类型,类型, iaia和和&ia0&ia0都表示都表示第一个元素的地址。因而,除了使用下标第一个元素的地址。因而,除了使用下标访问数组元素之外,还可以使用指针对数访问数组元素之外,还可以使用指针对数组进行访问。组进行访问。 int main()int main() int a10; int a10; int i; int i; int int * *p;p; for(i = 0; i 10; i+) ai = i; for
26、(i = 0; i 10; i+) ai = i; for(p = a; p a+10; p+) cout for(p = a; p a+10; p+) cout”运算符选择。定义结构体类型之运算符选择。定义结构体类型之后 , 可 以 创 建 该 类 型 的 许 多 实 例 。后 , 可 以 创 建 该 类 型 的 许 多 实 例 。n例如:例如:2常量和变量3运算符和表达式4语句5小结数据类型1 内置数据类型 指针类型 引用类型 数组 结构体 联合 枚举 类类型struct X char c;int i;float f;double d;X s1, s2;X* ps = &s1;s1.c =
27、 a;s1.i = 1;s1.f = 3.5;s1.d = 0.7s2.c = ps-c;结构体变量内存中的大小(1)n结构体变量的成员在内存中依次存放,因结构体变量的成员在内存中依次存放,因而,原则上,结构体变量在内存中的大小而,原则上,结构体变量在内存中的大小是其所有成员的大小之和。但是,为了提是其所有成员的大小之和。但是,为了提高访问效率,大多数编译器实际上都使用高访问效率,大多数编译器实际上都使用了边界对齐技术。了边界对齐技术。 struct Y struct Y char c; char c; int i; int i; ; ; Y st; Y st; n上面的变量上面的变量stst
28、在内存中占据几个字节呢?在内存中占据几个字节呢?是是5 5吗?吗? 2常量和变量3运算符和表达式4语句5小结数据类型1 内置数据类型 指针类型 引用类型 数组 结构体 联合 枚举 类类型结构体变量内存中的大小(2)内存地址内存地址1000开 始 的 一 个开 始 的 一 个机器字机器字内存地址内存地址1004开 始 的 一 个开 始 的 一 个机器字机器字内存地址内存地址1008开始开始 st.c占一个字节占一个字节st.i占一个完整占一个完整的机器字的机器字为了边界对齐而空为了边界对齐而空出来的出来的3个字节个字节st占的占的8个字节个字节2常量和变量3运算符和表达式4语句5小结数据类型1
29、内置数据类型 指针类型 引用类型 数组 结构体 联合 枚举 类类型在在GCC编译器下,编译器下,sizeof(Y)的结果是的结果是8。3.1.6 联合(共用体)nunionunion和和structstruct的语法类似,只是数据成的语法类似,只是数据成员的存储方式不同。员的存储方式不同。unionunion的每个成员都的每个成员都是从联合变量的首地址开始存储,所以每是从联合变量的首地址开始存储,所以每次只能使用一个成员。使用次只能使用一个成员。使用unionunion可以节可以节省空间,但是容易出错。省空间,但是容易出错。 union Packed union Packed char c;
30、char c; int i; int i; float f; float f; double d; double d; ; ; / /联合的大小是其中联合的大小是其中doubledouble的大小的大小 /因为因为doubledouble是占据空间最大的元素是占据空间最大的元素 Packed x;Packed x; x.c = a;/ x.c = a;/其余成员现在不可使用其余成员现在不可使用 x.d = 3.14;x.d = 3.14;/覆盖了成员覆盖了成员c c的内容的内容2常量和变量3运算符和表达式4语句5小结数据类型1 内置数据类型 指针类型 引用类型 数组 结构体 联合 枚举 类类型
31、联合的内存布局2常量和变量3运算符和表达式4语句5小结数据类型1 内置数据类型 指针类型 引用类型 数组 结构体 联合 枚举 类类型x.dx的首地址的首地址x.cx.fx.i3.1.7 枚举n枚举定义了一组命名的整数常量,从而提高代码枚举定义了一组命名的整数常量,从而提高代码的可读性。例如:的可读性。例如: enum ShapeType circle, square, rectangle ;enum ShapeType circle, square, rectangle ;ShapeTypeShapeType枚举类型定义了枚举类型定义了3 3个常量:个常量:0 0,1 1,2 2 分别和分别和
32、名字名字circlecircle,squaresquare以及以及rectanglerectangle关联。关联。ShapeTypeShapeType是一个枚举类型,可以用它来定义枚举变量,变量的是一个枚举类型,可以用它来定义枚举变量,变量的值只能是枚举成员。值只能是枚举成员。n也可以自己指定枚举成员的值:也可以自己指定枚举成员的值: enum ShapeTypecircleenum ShapeTypecircle10, square10, square20, rectangle;20, rectangle;未指定值的枚举成员,编译器会赋给它相邻的下一个未指定值的枚举成员,编译器会赋给它相邻的
33、下一个整数值,所以整数值,所以rectanglerectangle成员的值是成员的值是2121。n枚举类型在必要时,如参与算术运算,会被自动枚举类型在必要时,如参与算术运算,会被自动提升为算术类型。枚举的成员名字是不可打印的,提升为算术类型。枚举的成员名字是不可打印的,输出的是它所表示的整数值。另外,不能使用枚输出的是它所表示的整数值。另外,不能使用枚举成员进行迭代,举成员进行迭代,C+C+不支持枚举成员之间的前不支持枚举成员之间的前后移动。后移动。2常量和变量3运算符和表达式4语句5小结数据类型1 内置数据类型 指针类型 引用类型 数组 结构体 联合 枚举 类类型3.1.8 类类型n除了内置
34、类型和复合类型之外,除了内置类型和复合类型之外,C+C+还还允许用户自己定义类类型,并且在标准允许用户自己定义类类型,并且在标准库中预定义了一些常用的类型。这里先库中预定义了一些常用的类型。这里先简单介绍几种常用的标准类型。简单介绍几种常用的标准类型。 输入输出流输入输出流iostream iostream 字符串类字符串类 标准数组标准数组向量类向量类 2常量和变量3运算符和表达式4语句5小结数据类型1 内置数据类型 指针类型 引用类型 数组 结构体 联合 枚举 类类型输入输出流iostreamn输入输出操作是由输入输出操作是由iostreamiostream类提供的,类提供的,使用使用io
35、streamiostream需包含标准库头文件:需包含标准库头文件: #include #include niostreamiostream库中有两个预定义的对象:库中有两个预定义的对象: cincin,istreamistream类型的对象,用于从用户类型的对象,用于从用户终端读入数据。终端读入数据。cincin的常用方式为:的常用方式为:cin cin 变量名变量名; ; cin cin 变量名变量名1 1 变量名变量名2; 2; cin cin 变量名变量名1 1 变量名变量名2 2 变量名变量名n n; coutcout,ostreamostream类型的对象,用于向用户类型的对象,用
36、于向用户终端写数据。终端写数据。cout cout 的常用方式为:的常用方式为:cout cout 表达式表达式; ; cout cout 表达式表达式 endl; endl; cout cout 表达式表达式1 1 表达式表达式2 2 表达式表达式n;n; 2常量和变量3运算符和表达式4语句5小结数据类型1 内置数据类型 指针类型 引用类型 数组 结构体 联合 枚举 类类型输入输出流iostream#include #include using namespace std;using namespace std;int main()int main() int ival;int ival;f
37、loat fval;float fval;cin ival;cin ival;cin fval;cin fval;cout ival n;cout ival n;cout fval endl;/endlcout fval ival fval;cin ival fval;cout ival n fval endl;cout ival n fval endl; 2常量和变量3运算符和表达式4语句5小结数据类型1 内置数据类型 指针类型 引用类型 数组 结构体 联合 枚举 类类型字符串类stringn除了保留除了保留C C风格字符串风格字符串charchar* *之外,之外,C + +C + + 标
38、 准 库 还 定 义 了 字 符 串 类标 准 库 还 定 义 了 字 符 串 类stringstring。stringstring类支持字符串对象类支持字符串对象的各种初始化方式,支持字符串之的各种初始化方式,支持字符串之间的拷贝、比较和连接等操作,还间的拷贝、比较和连接等操作,还支持对字符串长度的查询和是否为支持对字符串长度的查询和是否为空的判断,并且也可以访问字符串空的判断,并且也可以访问字符串中的单个字符。使用中的单个字符。使用stringstring类,需类,需要包含相应的头文件:要包含相应的头文件:stringstring。#include #include 2常量和变量3运算符和
39、表达式4语句5小结数据类型1 内置数据类型 指针类型 引用类型 数组 结构体 联合 枚举 类类型字符串类string#include #include using namespace std;int main() string s1, s2; /创建两个空字符串对象 string s3 = Hello, World!; /初始化s3 string s4(I am ); s2 = “Today”; /赋值 s1 = s3 + + s4; /字符串连接 s1 += 5 ;/末尾追加 cout s1 + s2 + ! endl; /输出字符串内容 cout Length of s1 is : s1.
40、size() endl; /输出字符串长度 for (int i = 0; I s1.size(); +i) cout s1i ; /逐个输出s1中的字符2常量和变量3运算符和表达式4语句5小结数据类型1 内置数据类型 指针类型 引用类型 数组 结构体 联合 枚举 类类型字符串类stringn字符串比较使用运算符字符串比较使用运算符“=”=”n获得字符串长度使用获得字符串长度使用size()size()n判断字符串是否为空使用判断字符串是否为空使用empty()empty()n可以将一个可以将一个C C风格的字符串赋给风格的字符串赋给stringstring对象,对象,但反之不可。但反之不可。
41、n要将要将stringstring对象转换为对象转换为C C风格字符串,使用风格字符串,使用c_str()c_str()操作,其返回结果为操作,其返回结果为const charconst char* *,即转换得到的即转换得到的C C风格字符串首地址。例如:风格字符串首地址。例如:string s1 = “This is a book.”;string s1 = “This is a book.”;int x = strlen(s1);int x = strlen(s1);/Error/Errorx = strlen(s1.c_str();x = strlen(s1.c_str(); /OK/
42、OK2常量和变量3运算符和表达式4语句5小结数据类型1 内置数据类型 指针类型 引用类型 数组 结构体 联合 枚举 类类型标准数组向量类nC+C+标准库中的标准库中的vectorvector类为内置数组类提类为内置数组类提供了一种替代表示。为了使用供了一种替代表示。为了使用vectorvector,我们必须包含相关的头文件:我们必须包含相关的头文件:vectorvector。vectorvector可以像数组一样使用,还可以以可以像数组一样使用,还可以以STLSTL方式使用。方式使用。/数组习惯#include using namespace std;int main() vector iv(
43、10); int ia10; for(int id = 0; id10; id+) iaid = ivid; /2常量和变量3运算符和表达式4语句5小结数据类型1 内置数据类型 指针类型 引用类型 数组 结构体 联合 枚举 类类型向量类:STL使用习惯/STL习惯#include #include using namespace std;int main() vector iv; for(int id = 0; id10; id+) iv.push_back(id); for(int id = 0; idiv.size(); id+) coutivid; /2常量和变量3运算符和表达式4语句5
44、小结数据类型1 内置数据类型 指针类型 引用类型 数组 结构体 联合 枚举 类类型3.2.1 内置数据类型的文字常量 n当一个数值,例如当一个数值,例如5 5,出现在程序中时,出现在程序中时,它被称为文字常量(它被称为文字常量(literal literal constantconstant)。)。n“文字文字”是因为只能以它的值的形式指是因为只能以它的值的形式指代它。代它。n“常量常量”是因为它的值不能被改变。是因为它的值不能被改变。n文字常量是文字常量是不可寻址不可寻址的。每个文字常量的。每个文字常量都有相应的类型,其类型由其形式、取都有相应的类型,其类型由其形式、取值和后缀决定。值和后缀
45、决定。3运算符和表达式4语句5小结1数据类型常量和变量2 文字常量 变量和标识符 const限定词 volatile限定词整数文字常量 n整数文字常量可以表示为十进制、八进制整数文字常量可以表示为十进制、八进制或十六进制的形式。例如或十六进制的形式。例如2323可以写成:可以写成: 23 /23 /十进制十进制 027 /027 /八进制八进制 0 x17 /0 x17 /十六进制十六进制n十进制整数文字常量默认类型是十进制整数文字常量默认类型是intint,如,如果数值超出果数值超出intint能够表示的范围,那么其能够表示的范围,那么其类型是类型是longlong。n八进制和十六进制整数文
46、字常量的类型是八进制和十六进制整数文字常量的类型是intint、unsigned intunsigned int、longlong、unsigned longunsigned long中第一个范围足够表示该数值的类型。中第一个范围足够表示该数值的类型。n可以在文字常量后面加可以在文字常量后面加“L”L”或或“l”l”后缀后缀将其指定为将其指定为longlong类型。可以加类型。可以加“U”U”或或“u”u”将其指定为无符号数。如:将其指定为无符号数。如:116u 120UL 2L116u 120UL 2L3运算符和表达式4语句5小结1数据类型常量和变量2 文字常量 变量和标识符 const限定
47、词 volatile限定词浮点型文字常量n浮点型文字常量可以写成普通的十浮点型文字常量可以写成普通的十进制形式或科学计数法形式。例如进制形式或科学计数法形式。例如浮点数浮点数235.8235.8可以表示为:可以表示为:235.8 2.358E2 235.8 2.358E2 n浮点型文字常量默认为浮点型文字常量默认为doubledouble类型,类型,也可以加后缀改变其类型。也可以加后缀改变其类型。nfloatfloat类型的浮点文字常量可以在后类型的浮点文字常量可以在后面加面加“F”F”或或“f”f”标示,后缀标示,后缀“L”L”或或“l”l”则为则为long doublelong doubl
48、e类型。类型。 3.14F 1.24f 2.5E3L3.14F 1.24f 2.5E3L3运算符和表达式4语句5小结1数据类型常量和变量2 文字常量 变量和标识符 const限定词 volatile限定词布尔型文字常量nboolbool型的文字常量只有型的文字常量只有truetrue和和falsefalse。3运算符和表达式4语句5小结1数据类型常量和变量2 文字常量 变量和标识符 const限定词 volatile限定词字符型文字常量n字符型文字常量是用单引号括起来的字符型文字常量是用单引号括起来的单个字符或以斜线开头的转义字符,单个字符或以斜线开头的转义字符,如如aa,nn。n一些常用的转
49、义字符如:一些常用的转义字符如: 转义字符转义字符含义含义转义字符转义字符含义含义n换行符换行符r回车键回车键b退格键退格键a响铃符响铃符t水平制表键水平制表键v垂直制表键垂直制表键反斜杠键反斜杠键?问号键问号键单引号键单引号键双引号键双引号键ooo八进制数八进制数ooo hhh十六进制数十六进制数hhh3运算符和表达式4语句5小结1数据类型常量和变量2 文字常量 变量和标识符 const限定词 volatile限定词字符串文字常量n在程序中经常出现的还有用双在程序中经常出现的还有用双引号括起来的字符序列,即字引号括起来的字符序列,即字符串文字常量,例如符串文字常量,例如hello hello
50、 worldworld,其默认类型是,其默认类型是constconst charchar* *。 3运算符和表达式4语句5小结1数据类型常量和变量2 文字常量 变量和标识符 const限定词 volatile限定词3.2.2 变量和标识符变量n变量为我们提供了一个有名字的存变量为我们提供了一个有名字的存储区,可以通过代码对其进行读、储区,可以通过代码对其进行读、写处理。写处理。n变量有时也被称为对象。变量有时也被称为对象。n每个变量都有特定的数据类型,这每个变量都有特定的数据类型,这个类型决定了相关内存的个类型决定了相关内存的大小大小、布布局局、能够存储在该存储区的值、能够存储在该存储区的值的