为什么我们在结构数组中使用点运算符 (.) 而不是箭头运算符 (->) 作为函数参数?

3 c arrays struct

考虑array是一个类型为structure(struct)的变量数组。

当您将结构数组作为参数传递给函数时,您可以使用点 ( .) 运算符访问它: array[0].structField1

不应该使用箭头 ( ->) 运算符访问它,因为我们正在传递数组的第一个元素的地址,例如: array[0]->structField1

dbu*_*ush 8

数组索引运算符[]包含隐式指针取消引用。因此,如果array具有结构数组或结构指针类型,则array[0]具有结构类型而不是指针类型。

  • 具体来说,您可以使用“(array+n)->member”或“array[n].member”,但不能使用“array[n]->member”,因为最后一个间接级别不匹配。 (6认同)