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.*酒吧?