引用
引用是指针的延申,本质相同但是引用的写法和可阅读性更强。
引用是引用一个已经存在的变量,而指针可以新建一个不存在的新指针
#include<iostream> #define Log(x) std::cout<<x<<std::endl int main() { int a=5; int *b=&a; int& ref=a; ref=2; Log(a); std::cin.get(); }
引用时int和&是一个整体表示引用类型,引用并不会申请内存空间,引用相当于给变量起了一个别名。所以上面程序对ref操作也就相当于对a操作。常见错误是在引用函数时,经过函数运算后值并没有变。
#include<iostream> #define Log(x) std::cout<<x<<std::endl void Increment(int value) { value++; } int main() { int a=5; Increment(a); Log(a); std::cin.get(); }
如果想通过函数Increment改变a的值,那么有两种方法,一是将a的地址传入函数,二是使用引用
使用指针
#include<iostream> #define Log(x) std::cout<<x<<std::endl void Increment(int *value) { (*value)++; } int main() { int a=5; Increment(&a); Log(a); std::cin.get(); }
使用引用
#include<iostream> #define Log(x) std::cout<<x<<std::endl void Increment(int& value) { value++; } int main() { int a=5; Increment(a); Log(a); std::cin.get(); }
无情的摸鱼机器