版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2 21 1: :2 20 0: :3 31 1c+语言基础知识汇总1第二章第二章 C+C+语言初步语言初步本章主要内容本章主要内容 1.C+1.C+语言的字符集、词汇语言的字符集、词汇 2.2.基本数据类型、运算符基本数据类型、运算符与表达式与表达式 3.C+3.C+中的与变量中的与变量 4.4.C+C+中的中的I/OI/O 5.5.基本控制结构基本控制结构 6.6.数组、结构体、共用体与枚举类型数组、结构体、共用体与枚举类型 7.7.指针、指针、引用引用与与动态内存分配动态内存分配 8.8.函数与函数与函数重载函数重载2 21 1: :2 20 0: :3 31 1c+语言基础知识汇总21
2、 C+1 C+语言的字符集与词汇语言的字符集与词汇1.1.字符集字符集 (1) (1)字母字母 A B C D A B C D Z a b c d Z a b c d z z (2) (2)数字数字 0 1 2 3 4 5 6 7 8 90 1 2 3 4 5 6 7 8 9 (3) (3)特殊符号特殊符号 空格空格 ! # $ % & . ! # $ % & . ( ) * * + + ,- - ? / : ;/ : ; _ | _ | 2 21 1: :2 20 0: :3 31 1c+语言基础知识汇总32.2.词汇:五类词汇:五类 (1) (1)关键字关键字( (保留字保留字):):系统
3、预定义且有专门含义的单词系统预定义且有专门含义的单词, ,不允不允许另作它用许另作它用 .C+.C+的关键字包含了的关键字包含了C C语言的几乎所有关键字语言的几乎所有关键字 .C+.C+的关键字随的关键字随C+C+的发展而不断增加的发展而不断增加 (2)(2)标识符:由程序员为程序中的各种成份定义的名字标识符:由程序员为程序中的各种成份定义的名字 . .以字母或以字母或_ _开头开头, ,由字母、由字母、_ _、数字组成、数字组成 . .不能是关键字不能是关键字 .C+.C+中的标识符区分大小写中的标识符区分大小写 . .见名知义的原则见名知义的原则 .C+.C+系统对标识符的长度有一定限制
4、系统对标识符的长度有一定限制 (3)(3)直接常量直接常量 (4)(4)运算符运算符 (5)(5)分隔符:用来分隔不同的语法成份的单词分隔符:用来分隔不同的语法成份的单词 空格空格 ; # ; # ( ) / /* * * */ / /* * *C+C+的两种注释的两种注释: : ./ ./* * */ ./ / ./ 注释到行尾注释到行尾2 21 1: :2 20 0: :3 31 1c+语言基础知识汇总42 2 基本数据类型、运算符与表达式基本数据类型、运算符与表达式一一. .数据类型数据类型 每一项数据都唯一的属于某种类型每一项数据都唯一的属于某种类型 每一数据类型都有一个明确定义的值的
5、集合每一数据类型都有一个明确定义的值的集合 每一类型的数据占用相同大小的存储空间每一类型的数据占用相同大小的存储空间 同一类型的数据可以进行相同类型的运算同一类型的数据可以进行相同类型的运算数据类型数据类型简单类型简单类型复合类型复合类型指针类型指针类型 * 用户定义类型用户定义类型 enum 基本类型基本类型整型整型 int浮点型浮点型 float字符型字符型 char空类型空类型 void布尔型布尔型 bool数组数组 结构体结构体 struct共用体共用体 union类类 class1.C+1.C+的数据类型的数据类型基本类型是由系统定义基本类型是由系统定义, ,各种语言都具备的类型各种
6、语言都具备的类型复合类型与指针类型都复合类型与指针类型都属于用户定义类型属于用户定义类型2 21 1: :2 20 0: :3 31 1c+语言基础知识汇总52.2.基本类型基本类型 intint型:整型型:整型 VCVC中占中占4 4字节字节 floatfloat型型: : 浮点型浮点型 4 4字节字节 charchar型型: : 字符型字符型 1 1字节字节 voidvoid型型: : 空类型空类型 boolbool型型: : 布尔型布尔型 1 1字节字节 值为值为 true true 或或 falsefalse* * *修饰说明符修饰说明符longlong与与shortshort、sig
7、nedsigned与与unsignedunsignedlonglong和和shortshort修改整型具有的最大值和最小值修改整型具有的最大值和最小值signedsigned和和unsignedunsigned告诉编译器如何处理整型和字符型数告诉编译器如何处理整型和字符型数据的最高位据的最高位 floatfloat型可用型可用doubledouble和和longlong doubledouble修饰,修改实型数据修饰,修改实型数据的表数范围和精度的表数范围和精度2 21 1: :2 20 0: :3 31 1c+语言基础知识汇总6类型名类型名字节数字节数取值范围取值范围 bool bool1
8、1 true true、falsefalse char char1 1 -128 - 127 -128 - 127 signed char signed char1 1 -128 - 127 -128 - 127 unsigned char unsigned char1 1 0 - 255 0 - 255 int int4 4 -2 -231 31 - 2- 23131-1-1 signed int signed int4 4 -2 -231 31 - 2- 23131-1-1 unsigned int unsigned int4 4 0 - 2 0 - 23232-1-1 signed sh
9、ort int signed short int2 2 -32768 - 32767 -32768 - 32767 unsigned short int unsigned short int2 2 0 - 2 0 - 21616-1-1 signed long int signed long int4 4 -2 -231 31 - 2- 23131-1-1 unsigned long int unsigned long int4 4 0 0 - 2- 23232-1-1 float float4 4 -3.4E(+/-)38 - 3.4E(+/-)38 -3.4E(+/-)38 - 3.4E(
10、+/-)38 double float double float8 8 -1.7E(+/-)308 - 1.7E(+/-)308 -1.7E(+/-)308 - 1.7E(+/-)308 long double float long double float1010 -3.4E(+/-)4932 - 3.4E(+/-)4932 -3.4E(+/-)4932 - 3.4E(+/-)4932C+C+中的全部基本类型中的全部基本类型2 21 1: :2 20 0: :3 31 1c+语言基础知识汇总7二二. .运算符与表达式运算符与表达式 1. 1.运算符运算符 算术运算符:算术运算符:+ -+ -
11、 * * / % + - / % + - 关系运算符:关系运算符: = = = = = != 逻辑运算符:逻辑运算符:& | & | ! 位运算符:位运算符:& | & | 赋值运算符:赋值运算符:= += -= = += -= * *= /= %= = &= |= = /= %= = &= |= = 条件运算符:?:条件运算符:?: 逗号运算符:逗号运算符:, , 指针运算符:指针运算符:& &* * 求字节运算符:求字节运算符:sizeofsizeof 函数调用运算符、函数调用运算符、强制类型转换强制类型转换运算符:()运算符:() 分量运算符:分量运算符: . -. - 数组下标运算符:
12、数组下标运算符: 作用范围分解运算符:作用范围分解运算符:: 动态内存分配符:动态内存分配符:newnew、deletedelete 插入提取运算符:插入提取运算符:2 21 1: :2 20 0: :3 31 1c+语言基础知识汇总8运算符的优先级与结合性运算符的优先级与结合性运算符运算符含义含义要求操作对象数目要求操作对象数目结合性结合性()(): . -. -括号括号作用范围分解作用范围分解( (限定限定) )运算运算符数组下标运算符符数组下标运算符成员运算符成员运算符左左-右右+ - + - & &* *!+ -+ -( )( )sizeofsizeofnew deletenew de
13、lete自增自增 自减自减取地址取地址指针引用指针引用逻辑非逻辑非按位取反按位取反正正 负号负号强制类型转换强制类型转换求字节求字节动态分配动态分配 释放内存释放内存1 1右右-左左* * / % / %乘法乘法 除法除法 求余求余2 2左左-右右+ -+ -加法加法 减法减法2 22 21 1: :2 20 0: :3 31 1c+语言基础知识汇总9运算符的优先级与结合性(续表)运算符的优先级与结合性(续表)运算符运算符含义含义要求操作对象数目要求操作对象数目结合性结合性左移左移 右移运算符右移运算符2 2左左-右右 = = =小于小于 小于等于小于等于大于大于 大于等于大于等于= != !
14、=等于等于 不等于不等于& & | |按位与按位与按位异或按位异或按位或按位或&逻辑与逻辑与|逻辑或逻辑或?:?:条件运算符条件运算符3 3右右-左左= = += -= += -= * *= /= %= = /= %= = &= = |= &= = |=赋值运算符赋值运算符扩展的赋值运算符扩展的赋值运算符2 2右右-左左,逗号运算符逗号运算符2 2左左-右右2 21 1: :2 20 0: :3 31 1c+语言基础知识汇总10C+C+中的类型转换中的类型转换转换运算符:()转换运算符:()两种强制类型转换的方法两种强制类型转换的方法: : ( (目标类型名目标类型名) )表达式:表达式: f
15、loat x = 2.5; int y; float x = 2.5; int y; y = (int)x;y = (int)x; 目标类型名(表达式):目标类型名(表达式): float x = 2.5; int y;float x = 2.5; int y; y = int(x); y = int(x);C+C+中的显式转换中的显式转换static_caststatic_cast可以不用强制类型转换但一定会发生转换的地方可以不用强制类型转换但一定会发生转换的地方( (为为了更清楚、更醒目而使用)了更清楚、更醒目而使用)const_castconst_cast对对constconst和和vo
16、latilevolatile进行转换进行转换reinterpret_castreinterpret_cast转换为完全不同的意思,必须转换回原来的类型才转换为完全不同的意思,必须转换回原来的类型才能安全的使用,最为危险能安全的使用,最为危险dynamic_castdynamic_cast把基类对象把基类对象( (指针指针) )转换为派生类对象转换为派生类对象( (指针指针) )时使用时使用使用方式使用方式 转换用关键字转换用关键字 (待转换的表达式待转换的表达式) )2 21 1: :2 20 0: :3 31 1c+语言基础知识汇总11例:例:static_caststatic_castvo
17、idvoid func(int) func(int) voidvoid mainmain()()intint i=0 x7fff; long l; float f; i=0 x7fff; long l; float f;l = i; f = i;l = i; f = i; / /更好的方法是使用更好的方法是使用static_caststatic_castl = l = static_caststatic_cast (i);f = (i);f = static_caststatic_cast (i);(i);i = l; i= f;i = l; i= f; / /以上两条语句会出以上两条语句会出
18、WarningWarning,可使用如下方式消除,可使用如下方式消除i = i = static_caststatic_cast (l); i = (l); i = static_caststatic_cast (f);(f);charchar c = c = static_caststatic_cast (i);(i);voidvoid * *vp = &f;vp = &f;floatfloat * *fp = (fp = (floatfloat* *)vp; /C)vp; /C的方法,不好的方法,不好fp = fp = static_caststatic_cast (vp); /(vp);
19、 /更好的方法更好的方法doubledouble d = 0.0; d = 0.0;intint x = d; / x = d; /自动发生隐式类型转换自动发生隐式类型转换x = (x = (intint)d; /C)d; /C的方法,不好的方法,不好x = x = static_caststatic_cast (d); /(d); /更好的方法更好的方法func(d); /func(d); /自动发生隐式类型转换自动发生隐式类型转换func(static_castfunc(static_cast(d); /(d); /更好的方法更好的方法 2 21 1: :2 20 0: :3 31 1c+
20、语言基础知识汇总12例:例:const_castconst_castvoidvoid mainmain()() const intconst int i = 0; i = 0;/int /int * *j = &i; j = &i; /错误,不允许这样赋值错误,不允许这样赋值intint * *k = (intk = (int* *)&i; )&i; /被摒弃的方法被摒弃的方法k = k = const_castconst_castint(&i);(&i);/long /long * *l = const_castlongl = const_cast(&i); (&i); /错误,不允许同时进
21、行错误,不允许同时进行constconst* *-nonConst-nonConst* * / /和和nonConstnonConst* *-long-long* *两项转换两项转换 2 21 1: :2 20 0: :3 31 1c+语言基础知识汇总13例:例:reinterpret_castreinterpret_cast#include#include using namespaceusing namespace stdstd; ;const intconst int sz=100; sz=100;structstruct X X intint asz; asz;voidvoid pri
22、nt( print(X X* * x) x)forfor ( (intint i=0;isz;i+) i=0;isz;i+)cout ai ;cout ai ;cout endl - endl;cout endl - endl; void void mainmain()()X X x; x;printprint(&x);(&x);int int * *xp = xp = reinterpret_castreinterpret_cast (&x);(&x);forfor( (intint * *i=xp;ixp+sz;i+)i=xp;ixp+sz;i+) * *i = 10;i = 10;pri
23、ntprint( (reinterpret_castreinterpret_castX(xp);(xp);printprint(&x);(&x); 2 21 1: :2 20 0: :3 31 1c+语言基础知识汇总142.2.表达式表达式 由运算符连接操作数构成的式子由运算符连接操作数构成的式子 算术表达式算术表达式 关系表达式关系表达式 逻辑表达式逻辑表达式 赋值表达式赋值表达式 条件表达式条件表达式 逗号表达式逗号表达式2 21 1: :2 20 0: :3 31 1c+语言基础知识汇总153 3 常量与变量常量与变量一一.C+.C+中的常量中的常量 1. 1.直接常量直接常量( (字面
24、常量字面常量): 10): 10,10.510.5, AA, stringstring . .intint型型 .float .float型型 .char .char型型 . .字符串常量字符串常量 . .boolbool型型:true:true、falsefalse 2. 2.符号常量:符号常量:C+C+中有两种符号常量中有两种符号常量 #define#define定义的常量定义的常量 例:例:#define pi 3.1415926#define pi 3.1415926 关键字关键字constconst定义的常量定义的常量 例:例:const int sz = 100;const int
25、 sz = 100; #define#define定义的常量,在预处理时只是字符串的替换,对定义的常量,在预处理时只是字符串的替换,对编译器而言,不带有任何类型信息,不便于查错;而编译器而言,不带有任何类型信息,不便于查错;而constconst定义的常量带有类型信息,故优于定义的常量带有类型信息,故优于#define#define定义的定义的常量常量 C+C+推荐使用推荐使用constconst定义的常量定义的常量2 21 1: :2 20 0: :3 31 1c+语言基础知识汇总16 constconst常量常量定义语法定义语法: : const const 类型名类型名 常量名常量名 =
26、 = 常量值;常量值;或或 类型名类型名 const const 常量名常量名 = = 常量值;常量值;例:例:const float pi=3.14; const float pi=3.14; float const pi=3.14; float const pi=3.14; const int min=50; const int min=50; int const min=50; int const min=50; const int max=2 const int max=2* *min; min; int const max=2 int const max=2* *min;min; c
27、onstconst定义的常量,相当于定义了一个相应类型的变量,定义的常量,相当于定义了一个相应类型的变量,但其值不能发生改变但其值不能发生改变 例:例:const int min = 50;const int min = 50; min = 40; min = 40; /错误,不能改变错误,不能改变minmin的值的值 所以,所以,定义定义constconst常量的同时必须初始化,常量的同时必须初始化,且一旦初始化后,且一旦初始化后,就不会就不会( (因不能故不会因不能故不会) )再发生变化。因此在作用范围内若再发生变化。因此在作用范围内若某变量的值不会发生改变某变量的值不会发生改变, ,则定
28、义该变量时应用则定义该变量时应用constconst进行进行限定限定, ,以免无意中改变该变量的值以免无意中改变该变量的值 constconst常量是编译时的常量常量是编译时的常量 例:例:const int sz = 100;const int sz = 100; int arrsz; int arrsz;2 21 1: :2 20 0: :3 31 1c+语言基础知识汇总17 constconst与指针与指针1.1.指向常量的指针:指向常量的指针:限定指针所指的对象、变量限定指针所指的对象、变量 定义形式:定义形式: const const 类型类型 * * 指针变量指针变量=地址表达式地
29、址表达式 ; 或或 类型类型 const const * * 指针变量指针变量=地址表达式地址表达式 ;例:例:int var = 35;int var = 35; const int max = 100; const int max = 100; int int * *p;p; const int const int * *p1_const;p1_const; const int const int * *p2_const;p2_const; p1_const = &var; p1_const = &var; p2_const = &max; p2_const = &max; var=40;
30、 var=40; * *p1_const = 100;p1_const = 100; * *p2_const = 200;p2_const = 200; max = 200; max = 200; p = &max; p = &max;p1_constp1_const和和p2_constp2_const,varvar不是常不是常量量* *p1_constp1_const和和* *p2_constp2_const、maxmax是常量是常量2 21 1: :2 20 0: :3 31 1c+语言基础知识汇总18 指向常量的指针指向常量的指针const int *p1_constconst int
31、*p2_constconst int maxint varp1_constp1_const不是常量,不是常量,p1_constp1_const指向的变量的值指向的变量的值不不能能通过通过 * *p1_const p1_const 改变,但改变,但p1_constp1_const指向的变指向的变量即量即varvar本身不是常量,是本身不是常量,是可以可以改变的,故改变的,故 * *p1_const=100;p1_const=100; var=40; var=40;p2_constp2_const不是常量,不是常量,p2_constp2_const指向的变量的值指向的变量的值不不能能通过通过 *
32、*p2_const p2_const 改变,且改变,且p2_constp2_const指向的变指向的变量即量即maxmax本身是常量,其值不能改变,故本身是常量,其值不能改变,故 * *p2_const=200;p2_const=200; max=200; max=200;2 21 1: :2 20 0: :3 31 1c+语言基础知识汇总192.2.指针常量:指针常量:指针变量本身的值初始化后不能再改变指针变量本身的值初始化后不能再改变 定义方式:定义方式: 类型类型 * * const const 指针变量指针变量 = = 地址表达式;地址表达式;例例:int var1 = 100,var
33、2 = 200;:int var1 = 100,var2 = 200; const int max = 1000; const int max = 1000; int int * * const cst_p1 = &var1; const cst_p1 = &var1; int int * * const cst_p2 = &max; const cst_p2 = &max; * *cst_p1 = var2;cst_p1 = var2; cst_p1 = &var2; cst_p1 = &var2; 只说明了指针变量如只说明了指针变量如cst_p1cst_p1本身是常量,但并没有说不能本身是
34、常量,但并没有说不能改变改变* *cst_p1cst_p1的值的值必须要赋初值必须要赋初值2 21 1: :2 20 0: :3 31 1c+语言基础知识汇总203.3.指向常量的指针常量指向常量的指针常量 指针变量本身和所指对象的值都为常量,不能改变指针变量本身和所指对象的值都为常量,不能改变 定义方式:定义方式: const const 类型类型 * * const const 指针变量指针变量 = = 地址表达式;地址表达式; 或或 类型类型 const const * * const const 指针变量指针变量 = = 地址表达式;地址表达式; 例:例:int var1 = 128,
35、var2 = 256;int var1 = 128,var2 = 256; const int max = 1000; const int max = 1000; const int const int * *const doubleCst_p1 = &var1;const doubleCst_p1 = &var1; const int const int * *const doubleCst_p2 = &max;const doubleCst_p2 = &max; doubleCst_p1 = &var2; doubleCst_p1 = &var2; * *doubleCst_p1 = 50
36、0;doubleCst_p1 = 500; var1 = max-var2; var1 = max-var2; 2 21 1: :2 20 0: :3 31 1c+语言基础知识汇总21二二.C+.C+中的变量中的变量变量必须先定义变量必须先定义( (声明声明) )再使用再使用变量的定义变量的定义 存储类型存储类型 数据类型名数据类型名 变量名列表;变量名列表; C+C+中中几乎几乎 随处可以定义变量随处可以定义变量 例:例: for(for(int iint i=0;i100;i+)=0;i100;i+) if(i 100) if(i 100) int x int x = 0;= 0; x +
37、= 100; x += 100; int y int y = 10;= 10; 变量的分类:根据定义变量的位置,分为两类:变量的分类:根据定义变量的位置,分为两类:全局变量全局变量(外部变量)(外部变量)局部变量局部变量(内部变量)(内部变量)2 21 1: :2 20 0: :3 31 1c+语言基础知识汇总22 变量的存储类型变量的存储类型 存储方式:动态存储方式和静态存储方式存储方式:动态存储方式和静态存储方式 静态存储方式:程序运行过程中给此类变量分配固定静态存储方式:程序运行过程中给此类变量分配固定的存储空间的存储空间 动态存储方式:程序运行过程中根据需要,给此类变动态存储方式:程序
38、运行过程中根据需要,给此类变量动态分配存储空间量动态分配存储空间程序代码区程序代码区静态存储区静态存储区动态存储区动态存储区程序的存储组织程序的存储组织2 21 1: :2 20 0: :3 31 1c+语言基础知识汇总23 变量的存储类型变量的存储类型autoauto、registerregister、staticstatic、externextern和默认五种和默认五种autoauto:自动类型:自动类型 普通的局部变量都属于此类普通的局部变量都属于此类, ,分配在动态存储区中分配在动态存储区中registerregister:寄存器类型:寄存器类型staticstatic:静态变量:静态
39、变量 静态局部变量:在静态区中,只初始化一次静态局部变量:在静态区中,只初始化一次, ,多次调用多次调用函数时能保留前一次函数调用结束时的值,延长了该函数时能保留前一次函数调用结束时的值,延长了该变量的生存期变量的生存期 静态全局变量:在静态区中,限制了该变量的静态全局变量:在静态区中,限制了该变量的作用域作用域externextern:外部变量:外部变量 定义全局变量定义全局变量 声明外部变量:扩展了全局变量的作用域声明外部变量:扩展了全局变量的作用域2 21 1: :2 20 0: :3 31 1c+语言基础知识汇总24例:例:staticstatic#include#include us
40、ing namespaceusing namespace std; std;intint factor(int n) factor(int n) static int static int result = 1; result = 1; result result * *= n;= n; return result; return result; voidvoid main() main() for( for(intint i=1;i=8;i+) i=1;i=8;i+)cout factor(i) ;cout factor(i) ; cout endl; cout endl; 2 21 1:
41、:2 20 0: :3 31 1c+语言基础知识汇总25例:例:externextern/main.cpp/main.cpp#include #include using namespace std;using namespace std;extern int nTestVar;extern int nTestVar;void main()void main() nTestVar = 100; nTestVar = 100; cout nTestVar endl; cout nTestVar 变量变量 向流中添加数据的操作称为插入操作向流中添加数据的操作称为插入操作: : 流对象流对象数据数据
42、 : :提取运算符提取运算符 cincin和和coutcout是是C+C+预定义的流对象预定义的流对象 cout:cout:用于进行输出操作用于进行输出操作, ,与显示器相关联与显示器相关联 cin:cin:用于进行输入操作用于进行输入操作, ,与键盘相关联与键盘相关联2 21 1: :2 20 0: :3 31 1c+语言基础知识汇总29 用法用法: : coutcout表达式表达式11表达式表达式22 变量变量11变量变量22变量变量n;n; 可以串联多个可以串联多个 ,同样也可以串联多同样也可以串联多个个给多个变量输入数据给多个变量输入数据 输入时多个数据项之间用空格、输入时多个数据项之
43、间用空格、TabTab或回车分隔或回车分隔 具有智能,能够自动判断其后的数据项的类型,具有智能,能够自动判断其后的数据项的类型,并采用相应的类型进行输出或输入并采用相应的类型进行输出或输入 使用流对象时使用流对象时, ,必须必须#include#include相应的头文件相应的头文件( (如如iostream)iostream)并使用语句并使用语句“using namespaceusing namespace std;std;”打开名称空间打开名称空间stdstdcincin与与coutcout在在iostreamiostream中的中的stdstd名称空间中定义名称空间中定义2 21 1:
44、:2 20 0: :3 31 1c+语言基础知识汇总30二二. .简单的输入简单的输入/ /输出格式控制:使用操纵符输出格式控制:使用操纵符(manipulator)(manipulator) I/OI/O流类库中提供了若干个操纵符,可以直接嵌入到输入流类库中提供了若干个操纵符,可以直接嵌入到输入/ /输出语句中实现输出语句中实现I/OI/O格式控制格式控制操纵符操纵符功能功能endlendl输出一个换行符,并刷新流输出一个换行符,并刷新流decdec用十进制输入或输出数值用十进制输入或输出数值octoct用八进制输入或输出数值用八进制输入或输出数值hexhex用十六进制输入或输出数值用十六进
45、制输入或输出数值endsends输出一个空格符,并刷新流输出一个空格符,并刷新流setw(int n)setw(int n)设置其后一个数据项占据的宽度设置其后一个数据项占据的宽度setfill(char c)setfill(char c)设置数据项宽度不足时的填充字符设置数据项宽度不足时的填充字符setprecision(int n)setprecision(int n) 设置浮点数输出小数位数设置浮点数输出小数位数 常用的常用的I/OI/O操纵符操纵符2 21 1: :2 20 0: :3 31 1c+语言基础知识汇总31说明:说明: 不带参数的不带参数的I/OI/O操纵符定义在操纵符定义
46、在iostreamiostream中中 使用带参数的使用带参数的I/OI/O操纵符,需包含操纵符,需包含iomanipiomanip setw()setw()只对其后紧跟着的一个真正的数据项起作用只对其后紧跟着的一个真正的数据项起作用例:例:coutAendsBendl;coutAendsBendl; couthex255ends32endl; couthex255ends32endl; coutdecsetw(5)setfill(0)32endl; coutdecsetw(5)setfill(0)32endl; coutsetw(5)setprecision(4)7.5612endl; co
47、utsetw(5)setprecision(4)7.5612endl;屏幕输出屏幕输出2 21 1: :2 20 0: :3 31 1c+语言基础知识汇总325 5 基本控制结构基本控制结构 顺序、选择顺序、选择( (分支分支) )和循环结构和循环结构 对应的控制语句对应的控制语句控制语句控制语句无条件控制语句无条件控制语句条件控制语句条件控制语句分支语句分支语句循环语句循环语句ifif语句语句switchswitch语句语句switchswitch语句语句forfor语句语句whilewhile语句语句do-whiledo-while语句语句breakbreak语句语句continuecon
48、tinue语句语句returnreturn语句语句gotogoto语句语句2 21 1: :2 20 0: :3 31 1c+语言基础知识汇总336 6 数组、结构体、共用体和枚举类型数组、结构体、共用体和枚举类型一一. .数组:需要处理相同类型的一批相关数据时使用数组:需要处理相同类型的一批相关数据时使用数组分为一维数组与多维数组数组分为一维数组与多维数组 定义:定义: 一维数组:类型一维数组:类型 数组变量名数组变量名 数组长度数组长度 ; 二维数组:类型二维数组:类型 数组变量名数组变量名 第一维长度第一维长度第二维长度第二维长度; 例:例: int nArr10;int nArr10;
49、 int nArr2d105; int nArr2d105;说明:说明: 数组长度必须是常量表达式:编译时求值数组长度必须是常量表达式:编译时求值 C C意义上的字符串意义上的字符串采用字符数组作为其存储形式,在最采用字符数组作为其存储形式,在最后添加一个后添加一个ASCIIASCII码为码为0 0的字符作为的字符作为字符串字符串的结束标志的结束标志2 21 1: :2 20 0: :3 31 1c+语言基础知识汇总34stringstring类:字符串类类:字符串类stringstring类封装了字符串的基本特性和对字符串的典型操作类封装了字符串的基本特性和对字符串的典型操作, ,其对象可用
50、于保存几乎任意长的字符串,对处理输入文件其对象可用于保存几乎任意长的字符串,对处理输入文件中一行上字符数不定的情况特别有用中一行上字符数不定的情况特别有用stringstring类是类是STLSTL中的类,使用时需要包含头文件中的类,使用时需要包含头文件stringstring并并打开名称空间打开名称空间stdstdstringstring类的操作:成员函数类的操作:成员函数求串长:求串长:size()size()、length()length()例:例:#include #include #include #include using namespace std;using namespac
51、e std;void PrintAttribute(const string &str)void PrintAttribute(const string &str)cout size: cout size: str.size() str.size() endl; endl;cout length: cout length: str.length()str.length() endl; endl; 2 21 1: :2 20 0: :3 31 1c+语言基础知识汇总35int main()int main()string s1,s2;string s1,s2;PrintAttribute(s1)
52、;PrintAttribute(s1); s1 = My string object; PrintAttribute(s1); s1 = My string object; PrintAttribute(s1);s2 = Another String Object; PrintAttribute(s2);s2 = Another String Object; PrintAttribute(s2);return 0;return 0; 2 21 1: :2 20 0: :3 31 1c+语言基础知识汇总36赋值:赋值:assign() =assign() = s1.assign(s2); s1.
53、assign(s2); s1 = s2; s1 = s2;连接:连接:append += +append += + s1.append(s2); s1.append(s2); s1+=s2; s1+=s2; s1=s1+s2; s1=s1+s2;下标:下标: s10s10#include #include #include #include using namespace std;using namespace std;int main()int main() string s1 = cat ,s2,s3; string s1 = cat ,s2,s3; s2 = s1; s3.assign(
54、jump );s2 = s1; s3.assign(jump ); cout s2 s3 endl; cout s2 s3 endl; s1 += s3;s1 += s3; cout s1 endl; cout s1 endl; s1.append(and yell);s1.append(and yell); cout s1 endl; cout s1 endl; s10 = h;s10 = h; cout s1 endl; cout s1 endl; return 0; return 0; 2 21 1: :2 20 0: :3 31 1c+语言基础知识汇总37比较比较stringstrin
55、g pare(s2); pare(s2);比较字符串比较字符串s1s1与与s2s2,当,当s1s1等于等于s2s2时,返回时,返回0 0;当;当s1s1大于大于s2s2时时返回正值,否则返回负值返回正值,否则返回负值字符串的部分比较字符串的部分比较 pare(beg1,len1,s2,beg2,len2);pare(beg1,len1,s2,beg2,len2); beg1 beg1和和len1len1指示指示s1s1参与比较的开始字符的下标与长度,参与比较的开始字符的下标与长度,beg2beg2和和len2len2指示指示s2s2参与比较的开始字符的下标与长度参与比较的开始字符的下标与长度运
56、算符:运算符:!= =!= =2 21 1: :2 20 0: :3 31 1c+语言基础知识汇总38例:例:stringstring的比较:的比较: 字符串的排序字符串的排序#include #include #include #include using namespace std;using namespace std;int main()int main() string names = Li Hua,He XiaoMing,Zhang Li, string names = Li Hua,He XiaoMing,Zhang Li, Sun Fei,Chen Bao; Sun Fei,C
57、hen Bao; string s; string s; int i,j,k,nmb; int i,j,k,nmb; nmb = nmb = sizeof(names)/sizeof(names0)sizeof(names)/sizeof(names0); ; for(i=0;inmb-1;i+) for(i=0;inmb-1;i+) k = i; k = i; for (j=i+1;jnmb;j+)if( for (j=i+1;jnamesjnamesknamesj) k = j;) k = j; if(k!=i) if(k!=i) s = namesk; namesk = namesi;
58、namesi = s; s = namesk; namesk = namesi; namesi = s; for(i=0;inmb;i+) for(i=0;inmb;i+)cout name i = namesi endl;cout name i = namesi endl;return 0;return 0; 2 21 1: :2 20 0: :3 31 1c+语言基础知识汇总39子串:子串:substr()substr() s.substr(beg,len);s.substr(beg,len); beg beg指定子串的开始下标,指定子串的开始下标,lenlen指定读取的字符数指定读取的字
59、符数 string s = C+ program design string s = C+ program design; cout s.substr(4,7) endl;cout s.substr(4,7) endl; 查找:查找:find()find() s.find(substring);s.find(substring); s.find(substring,beginning); s.find(substring,beginning); 替换:替换:replace()replace() s.replace(beg,num,str); s.replace(beg,num,str);2 2
60、1 1: :2 20 0: :3 31 1c+语言基础知识汇总40例:把字母表中的逗号例:把字母表中的逗号“,”全部替换为分号全部替换为分号“;”#include #include #include #include using namespace std;using namespace std;int main()int main() string alphabet = A,B,C,D,E,F,G,H,I,J,K,L,M, string alphabet = A,B,C,D,E,F,G,H,I,J,K,L,M, N,O,P,Q,R,S,T,U,V,W,X,Y,Z; N,O,P,Q,R,S,T
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度墓地买卖合同含骨灰存放设施建设
- 2024年度供应链管理新合同
- 工业废水气浮处理工艺设计
- 2024年度气象站监测数据服务合同
- 2024年度新能源研发与技术许可合同
- 2024年度消防工程消防水池及水箱施工合同
- 海外红人营销的专业指南
- 2024年度文化旅游合同具体描述
- 2024-2025学年新教材高中政治第三单元全面依法治国9.2严格执法课堂训练含解析新人教版必修3
- 2024年度工程质量保证保证金合同
- 5000字论文范文(推荐十篇)
- 成人高级心血管生命支持(ACLS)课件
- 五赛五比真假烟鉴别题库试题含答案
- 《学校社会工作实务》课件合集
- 人教版《生命.生态.安全》六年级上册全册教案
- DB32T 3921-2020 居住建筑浮筑楼板保温隔声工程技术规程
- 京东考试答案
- 尿道损伤(教学课件)
- 火电厂生产岗位技术问答1000问(电力检修)
- 中国汉字讲述课件
- 八年级思想读本《4.1“涉险滩”与“啃硬骨头”》教案(定稿)
评论
0/150
提交评论