相信很多c++初学者都搞不清指针和引用是个什么玩意,这里我也不写其定义。主要解释“&”和“*”的作用。相信看完以后一定会有收获的。
首先,看起几个常见的例子:
int i =520;
int &r = i; //
int *p;
p = &i;
*p = i;
int &r2 = *p
以上是一些c++中常见的写法. 其中“&”和“*”既能作为表达式的运算符,也能作为申明的一部分,符号的上下文决定了符号的意思。
int i =520;
int &r = i; // 引用, r引用了i的值
int *p; //指针, 申请了一个指针p
p = &i; //取地址符 p储存了i的地址
*p = i; //解引用符
int &r2 = *p // &是引用, *是解引用符, r2引用了相当于i的值。
所以分两种情况,当“&”和“*”紧随类型名出现时,分别代表引用和指针。 作为表达式的运算符时,分别代表取地址符和解引用符。这样即使较为复杂的情况,我们都能分析清楚了。
例子:
int a =520;
int p = &i;
*p = *p * *p
这段代码首先定义了一个int型的变量i,并赋初值42,随后定义了一个int型指针,初始值为i的地址,*P在表达式中,指的就是解操作符,而中间的*是乘的意思,所以作用就是将i改变为42*42。