我有两个结构如下
typedef struct Rsp_s {
u8 code;
u8 Count;
}Rsp_t;
typedef struct Field_s {
u8 State;
u8 present;
u8 previous;
u8 event;
} Field_t
然后我有
Rsp_t *rsp;
Field_t data[3][7]
我想让data[0][0]
跟随rsp->Count
。我该怎么做?
data = (Field_t *)(&(rsp->Count) +1);
不行
当你像这样声明一个变量时…
int b[3][7];
…如果static
是编译器分配的内存位置,如果auto
是堆栈中给定的内存位置,因此不能以编程方式更改。但是,您可以访问该内存,并通过使用指针对其进行读写…
int (*a)[7] = b;
下面是等价的:
b[0][0] = b[1][1];
a[0][0] = a[1][1];
你的作业写反了。您希望将b[0][0]
的地址分配给a
,因此:
a = &b[0][0];