我有一个疑问
我有一个结构数组。在我将它直接初始化并在我的代码中使用之前。 但我被建议使用指针而不是直接结构。但我无法正确指向结构数组的指针。
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家伙
答案 0 :(得分:0)
好的,这有点乱。你有s_cqiReport作为多维数组,ptr作为单维数组。这条线
*ptr = s_cqiReport
没有意义。
此外,您尚未将任何内容初始化为cqiReport的实际实例。
请尝试以下操作。
cqiReport *foo = new cqiReport;
foo->a = 9;
foo->b = 3;
这不能回答你的问题,但它应该会有所帮助。
答案 1 :(得分:0)
你必须意识到数组实际上是一个指针,所以*ptr
已经指向s_cqiReport[0][0]
,因为它等于s_cqiReport
,它本身就是一个指针。
现在,如果你想让你的指针指向一个值,你必须使用&
运算符,这实际上意味着“地址”,所以像ptr3= &(s_cqiReport[1][0])
之类的东西使指针指向你想要它。
同样,我相信ptr3 = s_cliReport + 2
也会导致ptr3指向您希望它指向的位置,但我会避免在您的指针上执行算术运算,直到您对指针及其工作方式有深刻的理解。