我试图将结构指针传递给函数并通过指针初始化结构。知道为什么这不起作用吗?
struct Re
{
int length;
int width;
};
void test (Re*);
int main()
{
Re* blah = NULL;
test(blah);
cout << blah->width;
return 0;
}
void test(Re *t) {
t = new Re{5, 5};
}
我做错了什么?
答案 0 :(得分:12)
指针被复制到函数中,因为它是按值传递的。您必须将指针传递给指针或指针的引用才能对其进行初始化:
void test(Re *&t) {
t = new Re{5, 5};
}
答案 1 :(得分:1)
您没有在函数参数中初始化指针,因为在test()
函数中:
void test(Re *t) {
t = new Re{5, 5};
}
您没有传递指针的引用。初始化指针对象需要指针的引用或指针的指针。
您可能也会这样做:
int main()
{
Re blah;
test(&blah);
cout << blah->width;
return 0;
}
void test(Re *t) {
t->length = 5;
t->width = 5;
};