C++知识汇总(1)
1,左值指向一个内存单元右值内存单元的内容。所有的左值都可用作右值,但右值不是都可以作为左值。=MyInteger是错的.
2,intnum2=++num1,intnum2=num++。
使用后缀运算符,现将右值赋给左值,再将右值递增或递减。num2是num1的旧值。
使用前缀运算符,现将右值递增或递减,再将结果赋给左值。num2的值和num1的值相等。
在myInt++和++myInt中前缀后缀没有影响。是由于没有将原来的值赋给其他变量。
3,异或运算符“^“,有且只有一个操作符为true,结果才为true;
4,按位运算符:对操作数进行位运算。NOT(~)取反,OR()对相应位履行按位或运算,
AND()对相应位履行按位与运算。使用(^)对相应位履行按位异或运算。
按位与运算,两个比特序列对应位都为1,结果为1,否则均为0;
按位或运算,两个比特序列对应位都为0,结果为0,否则均为1;
按位异或运算,两个比特序列对应位不相等,结果为1,否则为0;
5,移位运算符将全部位序列向左或向右移动,是将数据乘以或除以2的n次方;
左移():=16*2的1次方=32;
右移():=16/2的2次方=4;
6,使用运算符sizeof肯定内存的占用量sizeof(variable)
7,continue跳到循环开头,重新评估循环条件。break跳出循环。
8,使用for(;;),do()……while(true),while(true)创建无穷循环。
9,调用自己的函数,递归函数
10,函数重载:名称和返回类型相同,参数不同.
11,简单函数使用内联函数。inline
12,(1)指针:存储地址的变量。使用援用运算符()获得变量的地址。
intage=30;
int*pInteger=age;
(2)使用消除援用运算符(*)访问指向的数据,消除援用运算符也叫间接运算符
pInteger的值是0xEFB34;
*pInteger的值是30;
(3)可以给*pInteger赋值,*pInteger=40;或age=40,更改age和*pInteger其中的一个都会影响另一个。
(4)sizeof(指针),32位系统为4字节,64位系统为8字节
13,使用new动态分配内存。使用delete进行释放。
对使用new[…]为一系列元素分配的内存,使用delete[]来进行释放。
Type*pointer=newType;
deletepointer;
int*myInt=newint[10]
delete[]myInt;
14,将指针递减或递减,将指针包括的地址值增加或减去它指向的数据类型的sizeof;
Type*pType=Address;
++pType,pType指向Address+sizeof(Type)
--pType,pType指向Address-sizeof(Type)
15,inthoursInDay=24
constint*pInteger=hoursInDay;//数据为常量,不能修改,但可以修改指针包括的地址,指针可以指向其他地方。pInteger=anotherHoursInDay
int*constpInteger=hoursInDay;//地址为常量,不能修改,但是可以修改指针指向的数据。*pInteger=30
constint*constpInteger=hoursInDay;//指针包括的地址和他指向的值都是常量。
16,数组变量是指向第一个元素的指针
intMyNumber[5];
int*pNumbers=MyNumbers;
pNumbers=MyNumber[0]
访问第二个元素,可以用MyNumber[1],也可以用指针*(pNumbers+1)
17,指针编程最好实践:
(1)务必初始化指针变量
(2)使用指针前,务必检查它是不是为NULL
(3)务必仅在指针有效时使用它。
(4)对new分配的内存,要使用delete释放。
18,使用new分配内存失败,将引发std::bad_alloc异常。另一种使用new(nothrow),返回NULL,不引发异常。
19,援用:变量的别名
intoriginal=30;
intref1=original;
intref2=original;
original和ref1和ref2都指向同一个地址。
如果函数接受非常大的对象,使用援用,可提高函数调用的效力,并使用const用于援用参数。
哪家治疗白癜风的医院好医院治疗白癜风费用