Arrays 使用结构数组初始化结构指针

Arrays 使用结构数组初始化结构指针,arrays,pointers,initialization,structure,Arrays,Pointers,Initialization,Structure,我有以下疑问 我有一个结构数组。在我将其直接初始化并在代码中使用之前。 但有人建议我使用指针而不是直接结构。但是我无法正确地获取指向structure数组的指针 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; *p

我有以下疑问

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

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]正确指向Scqireport[0][0],但ptr[2]指向一些垃圾。 如何获取指向Scqireport[1][0]的ptr2[1]点

请帮忙 谢谢
DSP家伙

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

*ptr = s_cqiReport 
没有道理

此外,您还没有将任何内容初始化为cqiReport的实际实例

尝试以下方法

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

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

您必须意识到数组实际上是一个指针,因此
*ptr
已经指向
scqireport[0][0]
,因为它等于本身就是指针的
scqireport

现在,如果你想让指针指向一个值,你必须使用
&
操作符,它本质上意味着“的地址”,所以类似
ptr3=&(s_cqiReport[1][0])
的东西使指针指向你想要的地方


同样地,我相信
ptr3=s_cliReport+2
也会使ptr3指向您希望它指向的地方,但我会避免对指针执行算术运算,直到您对指针及其工作方式有了深入的了解。

HI Mj,实际上我不想使用指针初始化。初始化已经完成。我希望指针指向正确的结构数组地址。你在C或C++中工作吗?它看起来更像C而不是C++,但是你应该用语言指定重新标记你的问题。