C++允许为同一个函数定义几个版本,从而使一个函数名具有多种功能,这称为函数重载。只要分别为不同参数的max编制相应的函数体,就可以实现各自的功能。
二、新的基本数据类型及其注意事项
2、C++比C多了bool(布尔)型。bool只有一个字节,bool取值false和true,是0和1的区别。
3、C++只限定int和short至少要有16位,而long至少32位,short不得长于int,int不能长于long,VC++6.0规定int使用4字节,这与C使用2字节不同。
4、C++中的常量
5、C++与C一样,也使用转义序列。如:'\0'表示ASCII码值为零的空字符(NULL),'\101'表示字符A。
三、动态分配内存
使用new和delete举例
(1)C++为结构动态分配内存一般格式为:
指针名=new结构名;//分配
delete指针名;//当不再使用这个空间时,必须使用delete释放空间。
四、引用
引用的例子
x=56,&x=0012FF7C,a=56,&a=0012FF7C,r=56,&r=0012FF7Cx=25,&x=0012FF7C,a=25,&a=0012FF7C,r=25,&r=0012FF7C
说明:
(1)引用:简单的说就是为现有的对象起个别名,别名的地址与引用对象的地址是一样的。
注意:①对象在引用前必须先初始化;
如int&a=x;int&a=x;int&a=x;等效。
(3)引用通常用于函数的参数表中,因为使用引用作为函数参数不产生临时对象,可提高程序执行效率和安全性。
(4)引用也常用于作为函数的返回值,因为引用作为函数返回值可用于赋值运算符的左边。
(5)引用实际上就是变量的别名,使用引用就如同直接使用变量一样,引用与变量名在使用的形式上完全一样,引用只是作为一种标识对象的手段。
但要注意
如:int*p=&x;√
int&a=x;int*p=&a;√;
如:int*&P=&x;×;
如:int&&r=x;×;
间接引用数组
#include 123410078909876856443 五、对指针使用const限定符 1、变量的指针、指向变量的指针变量、指针变量指向的变量 如:inta; int*p=&a; *p=2; P是变量a的指针,存放变量a所在的内存地址,则*p代表指针变量p指向的变量,也就是变量a,且下面等式成立: p==&a*p==*&a==a&*p==&a(*p)++==a++ 2、左值和右值 左值是指某个对象的表达式,必须是可变的。左值表达式在赋值语句中即可作为左操作数,也可作为右操作数,如:x=56;和y=x;,而右值56就只能作为右操作数,不能作为左操作数。 3、指向常量的指针 constint*p *p是常量,不能进行"*p="的操作,所以称为指向常量的指针。 如: constinty=58; constint*p=&y;//p是指向常量y的指针,不能作为左值 intx=45; constint*p=&x;//能通过左值x间接改变*p的值 4、常量指针 intx=5; int*constp=&x;//P是常量指针,即是常量地址,必须初始化,此后p的值不能改变 *p=56//p所指的变量x的值改变为56。 5、指向常量的常量指针 intx=2; constint*constp=&x; //*p和p都是常量,都不能作为左值,p必须初始化。 六、泛型算法应用于普通数组 1、数组不能作为整体输出,C++引入STL库提供的泛型算法,大大简化数组操作。所谓泛型算法,就是提供的操作与元素的类型无关。 (1)数组内容反转: reverse(a,a+Len);//数组元素反转排列 (2)复制数组内容: copy(a,a+Len,b);//将数组a的内容原样复制到数组b reverse_copy(a,a+Len,b);//逆向复制数组a中内容到数组b (3)数组升幂排序: sort(a,a+Len);//默认排序方式是升幂 (4)数组降幂排序: sort(b,b+Len,greater (5)检索查找数组内容: find(a,a+Len,value);//查找数组a中是否存在值为value的元素 find函数返回的是位置指针,一般使用判别语句输出查找的内容,如: Type*x=find(a,a+Len,value);//x是类型为type的指针 if(x==a+Len)cout<<"没有值为value的数组元素"; elsecout<<"有值为value的数组元素"; (6)输出数组的内容 ①将数组内容按正向送往屏幕: copy(a,a+Len,ostream_iterator 输出方式是将每个元素与"字符串"的内容组合在一起连续输出。 如果使用空格""或换行符"\n",可以按格式输出。 copy(a,a+Len,ostream_iterator //每个输出元素后面输出一个空格 copy(a,a+Len,ostream_iterator //每个输出元素之后,换新行 ②将数组内容按逆向方式送往屏幕: reverse_copy(a,a+Len,ostream_iterator 总结 3、对数组内容进行升幂、输出、反转和复制等操作需要包含头文件 演示数组升幂排序、复制、逆向和输出等操作 #include 1.14.43.32.22.23.34.41.11.14.43.32.21.12.23.34.44.43.32.21.1 演示数组降幂,查找,输出等方式 #include 1.12.23.34.44.43.32.21.1有值为4.4的数组元素没有值为8的数组元素 对一组数组进行局部操作 #include 3.32.2//只输出a[2]和a[3]2.23.34.4//输出a[3]~a[1]80001.14.43.32.2//数组b的内容1.13.34.42.2//只对中间2个排序84.41.10003.32.2//只对前6个排序 演示对字符数组进行操作 #include !ereheraew!aeeeehrrw!ereheraewwrrheeeea!eeeehrwrrheeeea!10 说明:字符串数组需要一个结束符,正向复制可以不需要复制结束符,但逆向复制时要注意,不能将这个结束符逆向复制,否则字符串的第一位变成结束标志,使其成为空字符串。 七、数据的简单输入输出格式 1、C++提供了两种格式控制方式,一种是使用ios_base类提供的接口,另一种是使用一种称为操控符的特殊函数,操控符的特点是可直接包含在输入和输出表达式中,因此更为方便,不带形式参数的操控符定义在头文件 在使用操控符时,一是要正确包含它们,二是只有与符号"<<"或">>"连接时才起作用,三是无参数的操控符函数不能带有"()"号。 2、常用操控符及其作用 格式 含义 作用 dec 设置转换基数为十进制 输入/输出 oct 设置转换基数为八进制 hex 设置转换基数为十六进制 endl 输出一个换行符并刷新流 输出 Setprecision(intn) 设置浮点数输出精度n Setw(intn) 设置输出数据字段宽度 Setfill(charch) 设置ch为填充字符 Setiosflags(longflag) 设置flag指定的标志位 resetiosflags(longflag) 清除flag指定的标志位 上表中操控符使用时,后四个操控符必须包含头文件 参数flag常引用的枚举常量及其含义 常量名 ios_base::left 输出数据按输出域左边对齐输出 ios_base::right 输出数据按输出域右边对齐输出 ios_base::showpos 在正数前添加一个“+”号 ios_base::showpoint 浮点输出时必须带有一个小数点 ios_base::scientific 使用科学计数法表示浮点数 ios_base::fixed 使用定点形式表示浮点数 使用setw设置输出宽度 #include 291001291001 setprecision功能演示 #include