我有一个指向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
答案 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
一样使用)