我看到有人在一个答案用这个这是什么意思const int *&var?
void methodA(const int*& var);
,但不明白的说法是什么意思。
AFAIK:
const int var
=>不能被改变const int* var
=>指针为int是常量,即*变种不能被改变,但变种可以是常数值改变const int& var
=>参考const int的即变种的值不能被改变
是什么意思const int*& var
,并const int& *var
也可能吗?
能否请您举一些例子还有,像什么可以做,什么不能用它做?
UPDATE:
我不知道如果我想正确的方式,但我开始想引用因为这是通作为参数变量的别名,所以 const int的* p; 了methodA(P)=>在这里我们通过数p作为const int的*,但我们不知道这是否是按值传递还是什么,直到我们看到方法的定义,
所以如果了methodA是这样 了methodA( const int的* & P2)==>在这里p2的另一个名字为p,即p和p2是相同的,从现在开始 如果了methodA(const int的* P2)==>这里P2作为价值即p2的传递只是局部这种方法,
如果我想错误的方式,请纠正我?如果是的话,我可能需要进一步研究一下这个?你能指出一些很好的参考吗?
更新2 如果像我这样的初学者一些想知道更多关于这件事,你可以使用C++东方电气/CDECL程序,我只是发现非常有用从here
$ c++decl
Type `help' or `?' for help
c++decl> explain const int&* p
declare p as pointer to reference to const int
c++decl> explain const int*& p
declare p as reference to pointer to const int
但是正如这里所指出的,第一个例子在C++中不合法。
由于
第三种方法baz,ConstIntPointer == const int * var,这是怎么传值的,还有指针参与?我现在很困惑。 – 2009-08-10 22:20:32
指针自己需要空间。指针是存储另一个变量地址的变量。它将复制该值,将其推入堆栈并调用该函数。 – GManNickG 2009-08-10 22:22:21
您正在传递存储在指针中的值(即内存地址)。 – 2009-08-10 22:22:50