我正在学习C ++并且指针有问题。 我想将指针传递给我的方法并为其分配一个新值。但是在调用方法后我的指针为0。我究竟做错了什么?感谢
#include <iostream>
using namespace std;
class MyObject
{
public:
bool search(int* a)
{
int* test = new int(23);
a = test;
return true;
}
};
MyObject* obj;
void search()
{
int* test = NULL;
obj->search(test);
cout << test << endl;
}
int main(int argc, char *argv[])
{
obj = new MyObject();
search();
}
答案 0 :(得分:3)
您需要通过引用传递指针。
bool search(int*& a)
如果没有这个,指针将按值传递,并且您只分配您传递的内容的副本。要分配您传递的实际对象/变量,需要通过引用传递指针。
进一步阅读:What's the difference between passing by reference vs. passing by value?
答案 1 :(得分:0)
a
是一个局部变量,如果您在search
方法执行期间设置其值,则不会对免费{test
变量产生任何影响search
1}}函数,因为a
只是test
的副本。
您应该通过引用传递a
:
bool search(int *&a) {
int* test = new int(23);
a = test;
return true;
}
答案 2 :(得分:0)
指针是通过值而不是引用传递的。这意味着本地变量test
的值未被更改。
取而代之的是bool search(int*& a)
这将传递对方法的引用,该方法将更新调用函数中的局部变量。