【发布时间】:2011-04-17 07:22:11
【问题描述】:
我对传递指针的工作原理有点困惑。
假设我有以下函数和指针,并且...
编辑:
...我想在函数中使用指向某个对象的指针作为参数。
即:
void Fun(int Pointer){
int Fun_Ptr = ---Passed Pointer---;
//So that Fun_Ptr points to whatever ---Passed Pointer points to
在 *Pointer 和 &Pointer 符号之间,我很困惑。我知道 *Pointer 意味着给出它所指向的任何东西。
我是否将 void (int *pointer) 放入声明中。那我用这个功能的时候呢?
感谢您的帮助。
编辑 2:
好的,我现在明白在声明中使用 *variable 意味着将传递一个指针。但是,当我使用该功能时呢?
即
int main(){
int foo;
int *bar;
bar = foo;
Fun(bar);
}
编辑 3: 好的,如果我错了,请纠正我:
根据上面代码的约定:
bar = &foo 表示:让 bar 指向内存中的 foo
*bar = foo 表示将 bar 指向的值更改为等于 foo 等于的值
如果我有第二个指针(int *oof),那么:
bar = oof 表示:bar 指向 oof 指针
bar = *oof 表示:bar 指向 oof 指向的值,而不是指向 oof 指针本身
*bar = *oof 意思是:把bar指向的值改成oof指向的值
&bar = &oof 意思是:把bar指向的内存地址改成和oof指向的内存地址一样
我有这个权利吗?
编辑 4:非常感谢您的所有帮助(我希望我能接受超过 1 个答案,但我必须选择第一个答案。我不确定社区 wiki 是如何工作的,但我会留下它以这种方式进行编辑(如果您愿意,可以随意将其变成参考指南)。
【问题讨论】:
-
不过,您的第二次编辑几乎是正确的
-
“正确吗?”。不。您不希望
bar等于 与foo,您希望它指向foo。这是通过地址操作符完成的。bar = &foo;. -
bar = foo, 无效,因为 foo 是一个 int 而 bar 是一个指针。正确的代码是“bar = &foo”,因为作为指针,bar 只能存储内存地址而不是 int。很抱歉评论答案。
-
记住,bar 指向变量 foo,所以如果你改变 foo,因为 bar 只引用 foo,当你下次使用 bar 时,它也会反映这个变化。
-
将已删除的评论移至质疑本身,所以上面的评论被搁置(抱歉)
标签: c++ pointers function arguments