在结构中设置指针的值

时间:2016-09-30 12:43:42

标签: c++ pointers struct

我有一个像这样的结构:

typedef struct foo {
   int *bar;
   foo();
} foo;

并说出一个像这样的int:int i = 2;

如果我希望int* p1 = new int;指向i,我只需:p1 = &i;

如何foo.bar指向i

我认为构造函数需要执行以下操作:

foo::foo() {
   bar = new int;
}

但我不知道如何让foo.bar指向i

2 个答案:

答案 0 :(得分:0)

在一个真实的例子中,你应该让construtor“foo()”初始化bar和删除它的dtor; 这只是一个如何使用指向结构的指针来访问成员的例子:

#include <iostream>
using namespace std;

typedef struct foo
{
    int* bar;
    foo(){}

}FOO, *PFOO;


int main(int argc, wchar_t *argv[])
{

    struct foo* ptrFoo = new foo;
//  PFOO pFoo = new foo; // you can use this also 
    ptrFoo->bar = new int(10);

    cout << ptrFoo->bar << endl;
    cout << (*ptrFoo).bar << endl;
    cout << *ptrFoo->bar << endl;
    cout << *(*ptrFoo).bar << endl;

    delete ptrFoo->bar;
    ptrFoo->bar = NULL;

    delete ptrFoo;
    ptrFoo = NULL;


    std::cin.get();
    return 0;
}

答案 1 :(得分:0)

我已经解决了这个问题。

多人对内存泄漏是正确的。

typedef struct foo {
        int *bar;
} foo;

推理结构的指针成员:

int main() {
   foo fooIn;
   int i = 2;

   fooIn.bar = &i; // have the int pointer 'bar' point to the value i;

   int *barVal = (int*)fooIn.bar;
   printf("bar points to: %d, *barVal) // prints "bar points to: 2"

}

相关问题