簡體   English   中英

在c / c ++中混淆指向結構的指針

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM