赞
踩
通常理解为引用就是类型前面加个&符号例如
int i=2;
int &a=i;
如果时指针类型的引用让人看起来就很困惑了,
int a = 3;//定义变量a;
int* p = &a; //等效于 int *p=&a;
int* &q = p; //等效于int *&q = p;
由于c++ 中对* 号和& 号,是靠近类型侧还是变量名侧并没有要求,所以写法可以有多种,理解起来很困惑,甚至有写出 int & *P 这样的想法。
#include <iostream> using namespace std; int main() { int a = 3;//定义变量a; int* p = &a; //定义指针变量p,初始化为 &a 类型可以理解为 int* 变量名为p int* &q = p; //q 为指针p的引用, p的类型为int* cout << p << endl; // p 是指针 cout << q << endl; //q是p的引用 q 也是指针 //输出值,p和q应该相等 cout << &q << endl; // &q 对别名取地址 cout << *q << endl; //q是p的引用 所以可以对q 进行解引用,实际获取到的是变量a的值 cout << * &q << endl;//*&q 获取到的是&q的内容值!!!! system("pause"); return 0; }
所以应该把int* 看做一个整体,才容易理解,而不能看成 & *p。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。