我有一个指向结构的指针:
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
最佳答案
如果 currTable
指向 Tables_t
数组的一个元素(不是 Tables_t*
)并且它是不是数组中的最后一个元素,然后访问 cuurentTable + 1
就可以了。您也可以通过 cuurentTable[1]
访问它。
数组保证结构存储在连续内存中。
编辑
问题已更新,包含更多详细信息,因此我相应地更新了下面的答案。
因为 currTable
指向 Table
这是一个局部变量(甚至是全局变量),所以 currTable + 1
是未定义的。
在问题中描述的情况下 currTable
应该是 Tables_t**
:
Tables_t** currTable = arr;
然后
(*(currTable+1))->offset...
是合法的。
EDIT2
只是一个装饰/可读性点:
(*(currTable+1))->offset...
相当于
currTable[1]->offset...
更具可读性和直观性(类似于arr
,可以像arr[1]->offset...
一样使用)
关于更改下一个指向结构的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32678994/