我对传递指针的工作原理有些困惑。C++将指针传递给函数(Howto)+ C++指针操作
比方说,我有以下功能和指针,...
编辑:
...我想用一个指向某个对象作为函数的参数。
即:
void Fun(int Pointer){
int Fun_Ptr = ---Passed Pointer---;
//So that Fun_Ptr points to whatever ---Passed Pointer points to
的*指针和&指针符号之间,我很迷茫。我知道*指针指的是指向它的任何东西。
我是否在声明中使用了void(int *指针)。当我使用该功能时呢?
您的帮助表示赞赏。
编辑2:
好的,我现在明白,使用在*声明变量意味着一个指针将被传递。但是,当我使用该功能呢?
即
int main(){
int foo;
int *bar;
bar = foo;
Fun(bar);
}
编辑3: 好了,纠正我,如果我错了:
根据上面的代码中的约定:
栏= & FOO手段:使条指向内存中的foo
* bar = foo表示更改t他珍视杆指向等于任何FOO等于
如果我有一个第二指针(INT * OOF),则:
巴= OOF指:巴指向OOF指针
巴= * OOF指:巴指向值OOF点,但不与OOF指针本身
*巴= * OOF是指:该棒积分值更改为到值OOF指向
& bar = & oof表示:将条指向的内存地址改为与指向的内存地址相同
我有这个权限吗?
编辑4:非常感谢所有的帮助(我希望我可以接受1个以上的答案,但我必须要接受第一个答案,我不确定社区wiki是如何工作的,但我会离开用这种方式进行编辑(如果你愿意,可以随意将它变成一个参考指南)。
您的第二次编辑几乎是正确的,但是 – Tomas 2010-09-26 01:13:46
“这是否正确?”。不,你不希望'bar'等于*到'foo',你希望它指向*'foo'。这是通过操作员的地址完成的。 'bar = &foo;'。 – 2010-09-26 01:14:38
bar = foo,是无效的,因为foo是一个int和bar指针。正确的代码是“bar =&foo”,因为作为指针,bar只能存储内存地址而不是int。对评论的答案抱歉。 – Tomas 2010-09-26 01:14:49