int a = 5;
// 定义一个指针指向a 的内存地址
int* prt = &a;
// 定义一个引用,类似于别名
int& ref = a;
// 此时a的值也是2
ref = 2;
// 1. 如果直接调用以下函数,就相当于,这个函数定义一个新的变量,申请新的内存,把复制为5
void increment(int value){
value++;
}
increment(a);
// 2. 我们需要传递int类型变量的地址
void increment(int* value){
(*value)++;
}
increment(&a);
// 3. 我们需要变量本身,这里只是创建一个引用,
// 编译中,内部操作同 实例2 一样,但这样使用起来更加方便
void increment(int& value){
value++;
}
increment(a);
// 引用的定义必须初始化
int& ref; // 这里会报错,没有初始化
ref = 8;
// example 1
int a = 5;
int b = 8;
int& ref = a;
ref = b;
// 最后的结果就是 a = 8 b=8
// example 2
int a = 5;
int b = 8;
int* ref = &a;
*ref = 2;
ref = &b;
*ref = 1;
// 最后的结果是 a=2 b=1;
*符号是取值
&符号是取地址
int* 是一个地址
int& 是一个引用
ref:
(C++中int *a; int &a; int & *a; int * &a)[http://t.csdn.cn/FfLAs]
网友评论