为什么不在函数中设置此结构

时间:2013-11-02 03:33:18

标签: c++ pointers struct

我试图将结构指针传递给函数并通过指针初始化结构。知道为什么这不起作用吗?

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};
}

我做错了什么?

2 个答案:

答案 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;    

};