465 字
2 分钟
C++入门 (四) : 引用
指针与引用
事实上,reference(引用)只是指针的一个拓展,只是基于指针的一种syntax sugar(语法糖),来使代码更容易读写而已。 顾名思义,引用就是指对现有变量引用的一种方式。 没有reference能做而pointer不能做的事.
和指针不同(先创建一个指针变量,然后赋值 nullptr 等),reference必须引用一个已存在的变量,引用本身并不是一个新的变量,并不真正占用内存。
定义引用
通过类型&来实现,此处&是类型的一部分,因此并不一定有&就一定是取地址或一定是引用,具体情况要看_context_
int a = 5;int& ref = a;ref不是一个真正的变量,只是a变量的一个别名
示例
void Increment(int value){ value++;}int main(){ int a = 5; Increment(a); std::cout << a << '\n';}这里我们用的是
passing by value(传值调用),并不是int& 或者 int*,因此会发生的是拷贝一个新的变量=5,并不会改变 a。 我们需要的是passing by reference(引用传递),来让这个变量递增
void Increment(int* value){ (*value)++;}int main(){ int a = 5; Increment(a); std::cout << a << '\n';}或者
void Increment(int& value){ value++;}int main(){ int a = 5; Increment(a); std::cout << a << '\n';}注意事项
一旦你声明了一个引用,你就不能修改他所引用的对象,当你给某个变量取了别名,这个别名就只能代表这个变量了.
除此之外,一旦声明必须立即赋值,因为他是变量的引用而不是一个真的变量.
如果想修改引用,则可以通过指针的方式(指针可以改变指向的对象,而引用不行)
int a = 5;int b = 8;
int* ref = &a;*ref = 2;ref = &b;*ref = 1; C++入门 (四) : 引用
https://dingfengbo.vercel.app/posts/c入门/04-c引用/