我知道下面两件事在c中是一样的(因为偏移量和数组)
someArray[i] //ith element of someArray
*(someArray + i) //ith element of someArray
但是对于结构,相同的语法似乎不太适用...
someStruct[i]->*(someArray + j) //compiler error
*(someStruct + i)->someArray[j] //Also compiler error
有没有办法使用指针/偏移量表示法(第二种)来表示结构的元素?
最佳答案
假设 someStruct
是一个结构体数组,而 someArray
是数组类型的结构体成员,那么它们中的任何一个都是有效的:
*(someStruct[i].someArray + j)
或
(*(someStruct + i)).someArray[j]
参见例如http://ideone.com/UtLN2 .
关于C指针/数组语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10986714/