C++const、引用、内联、动态内存分配
const关键字
C++中const修饰的是一个常量
- const常量位于符号表中,正常情况下内存不会为其分配内存空间
- 使用常量的时候从符号表中取值
- 如果对const常量进行取地址操作,则编译器会为其分配一块空间,但是它本身不会使用
define回顾
定义常量 | 宏常量 | 建议用const进行替换 |
---|---|---|
定义函数 | 宏函数 | 建议用内联函数进行替换 |
define与const的区别
- define是预处理的处理,类型完全替换,会在程序中有多个备份
- const是编译的时候处理,会进行变量的类型和作用域检测,只在符号表中有一个备份
引用
引用是空间的别名
int a = 10;
int &b = a; //a和b代表同一块空间
使用引用的时候必须要进行初始化
使用引用进行数据交换
引用可以在一定程度上替换指针
// 利用引用进行数交换
void mySwap(int &a, int &b)
{
int tmp = a;
a = b;
b = tmp;// 利用引用进行数交换
}
使用引用进行函数传参
void printS(Student *ps);
void printS(Student &rs)
{
re.结构体成员
}
函数返回值为引用
注意:不能返回局部变量的引用,可以返回静态变量或者全局变量的引用
- 使用普通变量接收返回值,接收到变量的值,而不是变量空间
- 使用引用接收返回值,接收到的是变量的空间(引用)
- 如果函数返回值为引用,则可以作为左值使用
func() = 200;
int &func() //函数的返回值是int &引用
{
static int sa = 0; //静态变