我在代码库中遇到了这个奇怪的函数声明,希望对您有所帮助:
struct MemberStruct (*GetMember (
CONTAINER_STRUCT *Buffer
))[DIM_1][DIM_2][DIM_3]
{
return(&Buffer->MemberStructArray);
}
它的行为类似于伪访问器。它返回MemberStruct
中CONTAINER_STRUCT
数组的地址。
CONTAINER_STRUCT
具有以下定义:
typedef struct ContainerStruct {
// Other members
struct MemberStruct MemberStructArray[DIM_1][DIM_2][DIM_3];
// Other members
} CONTAINER_STRUCT;
此函数的调用方式如下:
// declarations at the top of a function
struct MemberStruct (*MemberStructArray)[DIM_1][DIM_2][DIM_3];
CONTAINER_STRUCT Container;
// Other code, including the initialization of Container
MemberStructArray = GetMember(&Container);
我想更好地理解函数签名,并且无法在线找到此构造的任何示例。我的具体问题是:
*
符号带有函数名?由于这是返回地址,因此引用运算符不应该绑定到返回类型而不是函数名称吗?答案 0 :(得分:3)
破坏声明:GetMember
是一个函数:
GetMember()
采用一个类型为CONTAINER_STRUCT *
的参数:
GetMember(CONTAINER_STRUCT *)
并返回一个指针:
*GetMember(CONTAINER_STRUCT *)
对于3D阵列:
(*GetMember(CONTAINER_STRUCT *))[DIM_1][DIM_2][DIM_3]
struct MemberStruct
中的
struct MemberStruct (*GetMember(CONTAINER_STRUCT *))[DIM_1][DIM_2][DIM_3]