[英]Confusion with pointer to structure in c/c++
我試圖用指向結構的指針消除一些混淆,這些結構在類中用作成員。 我編寫了以下代碼,但即使程序編譯崩潰也是如此。 你能否在下面的代碼中說出我做錯了什么?
#include<stdio.h>
#include<string.h>
struct a{
int s;
int b;
char*h;
};
class test
{
public:
a * f;
void dh();
void dt();
};
void test::dh()
{
a d;
d.s=1;
d.b=2;
d.h="ffdf";
f=&d;
}
void test::dt()
{
printf("%s %d %d",f->h,f->b,f->s);
}
int main()
{
test g;
g.dh();
g.dt();
return 0;
}
void test::dh()
{
a d; <--
d.s=1;
d.b=2;
d.h="ffdf";
f=&d; <--
}
您正在創建一個本地對象d
,然后將f
設置為該對象的地址。 一旦函數結束,對象就會超出范圍而你會留下一個懸空指針。
你最大的問題是,當dh()
返回時, d
不再在范圍內。 而不是ad;
在dh()
,你需要f = new a(); fs=1; fb=2, fh="ffdf";
f = new a(); fs=1; fb=2, fh="ffdf";
。
在test :: dh中,您將公共指針f指定為d的地址,這是一個局部變量。 當g.dh();
退出時,d的地址不再有效,這就是為什么在g.dt();
引用f的g.dt();
失敗。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.