我有一个函数,它接受指向结构数组的指针
typedef struct {
bool isUsed;
int count;
} MyStructure;
void Process(MyStructure *timeStamps, int arrayLength){
for (int i = 0; i < arrayLength; i++){
MyStructure *myStructure = &(*(timeStamps + i));
if (myStructure->isUsed == true){
/*do something*/
}
}
}
我访问数组的方式似乎有点偏离。
&(*(timeStamps + i))
有更好的办法吗?
最佳答案
参数timeStamps
是MyStructure*
类型,这意味着此行:
MyStructure *myStructure = &(*(timeStamps + i));
相当于:
MyStructure *myStructure = timeStamps + i;
也相当于:
MyStructure *myStructure = &timeStamps[i];
注意,在这个表达式中:
&(*(timeStamps + i))
,timeStamps + i
是指向索引处元素的指针(即该元素的地址),然后使用返回类型为i
的l值的dereference operator (*
)来取消引用,然后使用运算符的地址(MyStructure
)来检索此元素的地址,该地址等于开始时保留的地址。