我有一个像这样的结构:
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
。
答案 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"
}