C++ 设置结构中指针的值

C++ 设置结构中指针的值,c++,pointers,struct,C++,Pointers,Struct,我有一个这样的结构: typedef struct foo { int *bar; foo(); } foo; 然后像这样说一个int:inti=2 如果我想使int*p1=新int;指向i我只需走:p1=&i 如何使foo.bar指向I 我认为建造师需要做以下工作: foo::foo() { bar = new int; } 但是我不知道如何使foo.bar指向I。在一个实际示例中,您应该使construtor foo初始化bar和删除它的dtor; 这只是一个如何使用指

我有一个这样的结构:

typedef struct foo {
   int *bar;
   foo();
} foo;
然后像这样说一个int:inti=2

如果我想使int*p1=新int;指向i我只需走:p1=&i

如何使foo.bar指向I

我认为建造师需要做以下工作:

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

但是我不知道如何使foo.bar指向I。

在一个实际示例中,您应该使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;
}
我已经解决了这个问题

多人对内存泄漏的看法是正确的

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"

}/P>这绝对不是C函数,因为结构中的一个成员在C.是无效的,这是C还是C++问题?因为你的结构是用C写成的,而新的关键字是C++。你似乎希望内存泄漏。这里p1=&i;你把p1指针指向的东西漏掉了。这里似乎有一些混乱的想法。例如:在C++中,不需要TyEnfFrEST结构,调用Bar = new int;看来,这将导致内存泄漏,因为你重新分配它后来,我不明白你的问题是在哪里分配一个值,或在哪里有一个实例的结构对不起它的C++。基本上,我在问p1=&的等价物是什么&指针是结构的成员?foo.bar=&i?如何访问现在由条指向的int?foo.*酒吧?