二维数组地址

时间:2014-07-09 16:58:41

标签: c

我有两个结构如下

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);

没有这样做。

2 个答案:

答案 0 :(得分:2)

当您声明一个这样的变量时......

int b[3][7];

...其内存位置由编译器分配static或者如果auto来自堆栈的给定内存,因此无法以编程方式更改。但是,您可以使用指针...

访问此内存,以及读取和写入内存
int (*a)[7] = b;

以下是等效的:

b[0][0] = b[1][1];
a[0][0] = a[1][1];

答案 1 :(得分:0)

你的作业是错误的。您希望将a的地址分配给b[0][0],以便:

a = &b[0][0];