【问题标题】:Initializing structure pointer with array of structure用结构数组初始化结构指针
【发布时间】:2012-02-08 10:29:45
【问题描述】:

我有以下疑问

我有一个结构数组。在我直接初始化它并在我的代码中使用之前。 但有人建议我使用指针而不是直接结构。但我无法正确获取指向 structre 数组的指针。

typedef struct 
{
    int a;
    int b;
} cqiReport;


cqiReport s_cqiReport[2][2];    
cqiReport *ptr[2], *ptr2, *ptr3;
s_cqiReport[0][0].a=1;
s_cqiReport[0][0].b=1;
*ptr= s_cqiReport;
    *ptr2= s_cqiReport[0][0];
    *ptr3= s_cqiReport[1][0];

我得到 ptr[0] 正确指向 s_cqiReport[0][0] 但 ptr[2] 指向一些垃圾。 如何让 ptr2[1] 指向 s_cqiReport[1][0]?

请帮忙 谢谢 DSP的家伙

【问题讨论】:

  • 您使用 C 还是 C++ 工作?它看起来更像 C 而不是 C++,但你应该用语言名称重新标记你的问题。

标签: arrays pointers initialization structure


【解决方案1】:

好吧,这有点乱。您将 s_cqiReport 作为多维数组,将 ptr 作为单维数组。线

*ptr = s_cqiReport 

没有意义。

此外,您还没有对实际的 cqiReport 实例进行任何初始化。

试试下面的。

cqiReport *foo = new cqiReport;
foo->a = 9;
foo->b = 3;

这并不能回答您的问题,但应该会有所帮助。

【讨论】:

  • HI Mj,实际上我不想使用指针进行初始化。初始化已经完成。我希望指针指向正确的结构数组地址。
【解决方案2】:

你必须意识到,数组实际上是一个指针,所以*ptr已经指向s_cqiReport[0][0],因为它等于s_cqiReport,而s_cqiReport本身就是一个指针。

现在如果你想让你的指针指向一个值,你必须使用& 运算符,它本质上意味着“地址”,所以像ptr3= &(s_cqiReport[1][0]) 这样的东西会让指针指向你想要的位置.

同样,我相信ptr3 = s_cliReport + 2 也会使 ptr3 指向您似乎希望它指向的位置,但在您对指针及其工作原理有深入了解之前,我会避免对您的指针执行算术运算。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-03
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多