分享
三行代码  ›  专栏  ›  技术社区  ›  tianyu

如何在c中使用int point构造

  •  0
  • tianyu  · 技术社区  · 5 天前

    我使用 int8_t* 指向结构,我可以使用 cout 打印“ num 数据,但如何打印 b “数据?

    struct A_T{
        int num;
        char *b;
    };
    int main()
    {
        A_T *a=new A_T();
        a->num=10;
        a->b="aaa";
        int8_t *p;
        p=(int8_t*)a;
        cout<<a->num<<endl;
        cout<<*p<<endl;
        return 0;
    }
    

    cout<<*p<<endl 可以打印“ 号码 “数据是10,但是当我使用 cout<<*(p+1)<<endl 打印“ b “数据,它什么也不打印。

    你能帮助我吗?

    谢谢您

    2 回复  |  直到 5 天前
        1
  •  1
  •   Farhad Sarvari    5 天前

    您可以使用此“cout<((A_T*)p)—>b<<endl;”指令访问结构的成员b。

        2
  •  4
  •   john    5 天前

    这很痛苦,但这可能对你有用

    #include <stddef.h>
    
    cout << *(char**)(p + offsetof(A_T, b)) << '\n';