首页 > 代码库 > int& a = b 的思考
int& a = b 的思考
在PCL显示点云部分程序中,涉及到了如下程序
1 // 定义相关变量2 pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_ptr (new pcl::PointCloud<pcl::PointXYZ>);3 pcl::PointCloud<pcl::PointXYZ>& cloud = *cloud_ptr; //点云
出现了<Type> & a = *b; 的表达式,笔者很少见到过这样的表达式,经常见到<Type> * a = b;类型,即定义了一个指向b的指针,a 的值(value)为b的地址。通过谷歌搜索,得到以下结果:
以上结果原网页链接:http://www.cplusplus.com/forum/windows/17153/
得知:int& a = b; 就是把b的地址赋给a的地址,即a,b变量拥有同一地址,他们的值必定相等,并且改变a的大小,也同时在改变b的大小。
笔者做了简单的测试。如图:
得到程序的运行结果如右侧。
这和定义int b = a 是不一样的。
再分析在PCL中遇到的这段程序:
// 定义相关变量 pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_ptr (new pcl::PointCloud<pcl::PointXYZ>); pcl::PointCloud<pcl::PointXYZ>& cloud = *cloud_ptr; //点云
cloud_ptr 代表指向点云的指针(不代表其指向了点云数据块,其实应该是指向了“指向点云数据块的指针变量(点云数据名变量)”的指针),那么*cloud_ptr相当于点云数据类型变量,那么<Type>& cloud = *cloud_ptr 就相当于把点云变量的地址赋给了cloud的地址,那么cloud其实就是一个点云变量。
int& a = b 的思考
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。