更改下一个指向结构的值

时间:2015-09-20 11:44:26

标签: c pointers struct

我有一个指向struct的指针:

typedef struct Tables_s
{
    uint8 type;                                 /*from StatisticType_e*/
    uint16 offset;                              /*offset from start of   buffer*/
} Tables_t;

具有成员偏移量,并定义为:

Tables_t Table; 
Tables_t Table1; 

然后指出:

Tables_t *currTable;
currTable = Table;

这是数组中的许多结构之一:

arr[0] = &Table;
arr[1] = &Table1;

我可以通过执行以下操作来更改列表中的下一个结构吗?

(currTable+1)->offest

1 个答案:

答案 0 :(得分:2)

如果currTable指向Tables_t数组的元素( Tables_t*)并且它不是数组中的最后一个元素,那么访问{ {1}}没问题。您也可以cuurentTable + 1访问它。

Array保证结构存储在连续内存中。

修改

问题已经更新了更多细节,所以我在下面更新了我的答案。

由于cuurentTable[1]指向currTable,这是一个局部变量(甚至是全局变量),Table未定义。 在问题currTable + 1中描述的情况应为currTable

Tables_t**

然后

Tables_t** currTable = arr;

是合法的。

<强> EDIT2

只是装饰/可读性点:

(*(currTable+1))->offset...

相当于

(*(currTable+1))->offset...

更具可读性和直观性(类似于currTable[1]->offset... ,可以像arr一样使用)