1.声明定义
C++可以在需要使用时再定义
2.register关键字的升级
·C++中可以取得register变量的地址
3.const关键字
·const修饰的变量不可变,也不可通过空间修改,即常量看待。当碰见常量声明时在符号表中放入常量
4.内存分配与释放(new/delete)
变量申请:
Type * pointer = new Type;
//——-
delete pointer;
数组申请:
Type *ptr = new Type[100];
//————-
delete[] ptr;
·new与malloc的区别:
A.new是C++的一部分,malloc由C库tigong
B.New以具体类型为单位进行内存分配,malloc智能以字节为单位进行内存分配
C.New在申请变量时可以进行初始化,malloc不具备内存初始化的特性
初始化:int *ptr = new int(5);
*p=5;
二维数组的定义:int (*pp)[6]=new int[6][6];
三维数组的定义:int (*ppp)[6][6]=new int[6][6][6];
5.引用 VS 指针
1)引用:引用是给一个变量起别名,例如:int a=1;int &b = a;//b是a的别名,因此a,b是同一个单元
a.定义引用时一定要注意初始化,指明该引用变量是谁的别名
b.在实际应用中,引用一般用作参数传递与返回值
2)Const引用:const的引用必须指向const
const int a=1;
const int &b=a;//true;
int &c = a;//error
3)函数传参:按引用传递
void add(int &num)
{
//--------------
}
int main()
{
int num=1;
add(num);
}
4)函数返回值:引用作为函数返回值
不能返回对局部变量的引用
5)引用与指针的区别
引用访问一个变量是直接访问,而指针是间接访问
引用是一个变量的别名,本身不单独分配自己的内存空间,而指针有自己的内存空间
引用一经初始化不能再引用其他变量,而指针可以。
尽可能使用引用,不得已使用指针
6.函数升级
1)内联函数(inline)
A.内联函数调用时,要求实参和形参的类型一致,另外内联函数会对实参表达式进行求值,然后传递给形参;而宏调用只用实参简单的替换形参
B.内联函数是在编译的时候,在调用的地方将代码展开的,而宏则是在预处理时进行替换的
C.在C++中建议采用inline函数来替换带参数的宏
2)函数重载
相同的作用域,如果两个函数名称相同,而参数不同,我们把它们称为重载overload
函数重载的不同形式:
·形参数量不同
·形参类型不同
·形参的顺序不同
·形参数量和形参类型都不同
3)带默认参数的函数
函数没有声明时,声明时指定后,定义就不能再指定默认值
默认值的定义必须遵守从右到左的顺序,如果某个形参没有默认值,则他左边的参数就不能有默认值