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