引用的其他形式
指针引用
- 使用指针引用时,相当于是使用二级指针,使用二级指针可以从函数内部带出函数里的变量,那么使用指针引用也可以
#include <iostream>
using namespace std;
//使用二级指针形式
void boy_home(int** meipo) {
static int boy = 23;
*meipo = &boy;
}
//使用指针引用的形式
void boy_home1(int*& meipo) {
static int boy = 23;
meipo = &boy;
}
int main(void) {
int* meipo1 = NULL;
int* meipo2 = NULL;
cout << "调用使用二级指针形式的函数" << endl;
boy_home(&meipo1);
cout << *meipo1 << endl;
cout << "调用使用指针引用形式的函数" << endl;
boy_home1(meipo2);
cout << *meipo2 << endl;
return 0;
}
常引用
-
在 C++中可以声明 const 引用
语法:
const Type& name = var;
const 引用让变量拥有只读属性
#include <iostream>
using namespace std;
int main(void) {
int a = 10;
//1.用变量初始化常引用
const int& b = a;
//b = 100; //常引用是让变量引用变成只读,不能通过引用对变量进行修改
printf("a: %d\n", a);
//2.用字面量初始化常量引用
const int c1 = 10;
const int& c2 = 10; //这个是在 C++中,编译器会对这样的定义的引用分配内存,这算是一个特例
int c3 = c2;
//c2 = 100;//不能修改
return 0;
}
-
const 引用结论:
1)const & int e 相当于 const int * const e
2)普通引用 相当于 int *const e1
3)当使用常量(字面量)对const引用进行初始化时,C++编译器会为常量值分配空间, 并将引用名作为这段空间的别名
4)使用字面量对const引用初始化后,将生成一个只读变量