hur.cn - 华软网

 热门搜索

求这个函数参数类型定义的意义

  作者:未知    来源:网络    更新时间:2011/7/31
在MFC里看到一个函数的参数定义是我从来没见过的

void HoughTransform(int*& pCircPos)

。。。。
。。。。

我想问
int*& pCircPos到底是什么意思,这样定义出的函数是属于指针吗?又怎么使用它呢?
---华软 网友回答---
这是指针的引用啊
这种使用很常见
不过一般会对指针类型做一次重命名
这么使用的目的一般是要对传入指针本身坐修改
---华软网友回复---
引用楼主 qq1455901151 的回复:
在MFC里看到一个函数的参数定义是我从来没见过的

void HoughTransform(int*& pCircPos)

。。。。
。。。。

我想问
int*& pCircPos到底是什么意思,这样定义出的函数是属于指针吗?又怎么使用它呢?

*&表示指针的引用
你把该函数写成这样可能会更清楚一些
void HoughTransform((int*) &pCircPos);
---华软网友回复---
比双星指针(**)看起来复杂
---华软网友回复---
看到3楼的话好像让我略有点感觉,我是不是可以这样理解。它把&pCircPos的地址作为一个指针呢?
---华软网友回复---
好像有点懂了
---华软网友回复---
void HoughTransform(int*& pCircPos)
{
}
// 
void HoughTransform_1(int** pCircPos)
{

//
//调用:
int integer=100;
int *pinteger=&integer;
HoughTransform(pinteger);
HoughTransform_1(&pinteger);

---华软网友回复---
引用 4 楼 qq1455901151 的回复:
看到3楼的话好像让我略有点感觉,我是不是可以这样理解。它把&pCircPos的地址作为一个指针呢?


不是,对于函数来说,在函数原型和函数定义的函数头时,&符号表示引用。在函数调用时,&符号表示获取什么的地址。

这段程序中的指针的类型是int*。

所以规范一点的写法应该是    void HoughTransform( (int*)&  pCircPos );

int*(指向int类型的指针)类型的引用。

void HoughTransform( int& a)

常见的就是这种,就是int类型的引用。

两个其实差不多,只是类型不同而已。一个是int,一个是int*。
---华软网友回复---
指针的引用,也就是你要传递一个指针进去,但是函数内部是可以修改这个指针本身,不然的话,就需要用指针的指针作为参数了
---华软网友回复---
pCircPos 是个指针, 函数内部要对指针pCircPos进行赋值啥的
---华软网友回复---
void HoughTransform(int*& pCircPos)
{
   pCircPos=new char[1024];
}
//  
void HoughTransform_1(int** pCircPos)
{
   *pCircPos=new char[1024];

}
---华软网友回复---
指针的引用做为参数的作重要的区别是后者必须引用一个变量,前者可以为NULL
---华软网友回复---
10楼的最清楚了!!谢谢      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。