C指针/数组语法

Set*_*hot 1 c arrays syntax pointers

我知道c中有以下两个相同的东西(因为偏移和数组)

someArray[i]     //ith element of someArray
*(someArray + i) //ith element of someArray
Run Code Online (Sandbox Code Playgroud)

但是对于结构体,相同的语法似乎并没有很好地保持......

someStruct[i]->*(someArray + j)   //compiler error
*(someStruct + i)->someArray[j]   //Also compiler error
Run Code Online (Sandbox Code Playgroud)

无论如何使用指针/偏移表示法(第二个)来表示结构的元素?

Oli*_*rth 5

假设someStruct是一个结构数组,并且someArray是数组类型的结构成员,那么这些结构中的任何一个都是有效的:

*(someStruct[i].someArray + j)
Run Code Online (Sandbox Code Playgroud)

要么

(*(someStruct + i)).someArray[j]
Run Code Online (Sandbox Code Playgroud)

参见例如http://ideone.com/UtLN2.