[C++语法语义探讨] 什么时候会用到这样的参数 *¶m
zjumty
2007-04-29
我最近在书中看到有这样的函数定义代码
ReturnType func(ClassType *&m) 什么时候会用到 *&m的参数啊, 这个是什么意思啊. &m,传引用 *param,传指针 *&m是传什么? 引用的指针? |
|
wzgme
2007-04-29
¶这是什么符号?
ClassType * :指向ClassType 类型的指针 &m :引用 合起来ClassType *&m : 指向ClassType 类型指针的引用 函数参数这么写就是为了引用传递。 |
|
小帽子
2007-05-11
wzgme 写道 合起来ClassType *&m : 指向ClassType 类型指针的引用 楼上的哥哥 指向ClassType 类型指针的引用 直接传ClassType &m就可以了吧 我知道在C++里 参数如果是"类"的话 一般传递他的引用 这是为了效率 因为传引用 的话 就无须构造了 |
|
wzgme
2007-05-11
ClassType &m
这是传引用啊,那个是用引用的方式传递指针。 |
|
小帽子
2007-05-11
那 *&m 的地址是什么呢?
|
|
qiezi
2007-05-13
就是个引用类型的参数,引用的类型是指针,简单使用的例子:
1、使用指针: void GetMemory(char** p, size_t size) { *p = malloc(size); } 2、使用引用: void GetMemory(char*& p, size_t size) { p = malloc(size); } 如果是这样就传不回去了: void GetMemory(char* p, size_t size) { p = malloc(size); } |
|
pstinghua
2007-06-03
传的是引用,指针的引用,像这种复杂类型,从里往外读
|
|
jimmy_c
2007-10-04
*&的含义基本等同于**,当然区别是引用不是指针。
因为C++中鼓励使用&,所以为了避免更多的*,有人就把**改写为了*&,目的都是为了传递回一个指针的值,例如,在函数中new 一个对象。 |
|
dayn9
2007-10-09
*和&本身就有点人格分裂,D&E中提到确实也有不得已的苦衷。
我觉得不该这么用,也许**更妥当,不应该因为语言特性的人格分裂,而让程序员精神分裂。 |
|
jimmy_c
2007-10-10
**和*&比较起来更容易让人精神分裂,因为它具有四种可能的语义:
指向指针的指针; 指针数组; 指向数组的指针; 二维数组; 而相比较而言,*&的含义比较单一,多半是在返回一个指针或数组的时候才会用到(比如:查找,new)。 之所以会出现这种混杂的情况,还是因为&的功能比较弱造成的,一旦赋值就无法改变。造成了很多写代码时不必要的麻烦。 觉得C++有些语法真是有点不可理喻,类似的还有::*。我觉得是比&还要难用的东西。所以C++中才会有那么多非直观的语言技巧存在,实际上是非常不必要的。 |