我有一个结构,我想在编译时静态分配,但我不知道如何返回指向内部结构的指针。
typedef struct
{
int d;
} innerStruct;
typedef struct
{
int a;
int b;
int c;
innerStruct inner;
} myStruct;
static myStruct m1;
innerStruct * getMyStructPtr()
{
myStruct * ptr = &m1;
return ptr->inner;
}
int main()
{
innerStruct * retval = getMyStructPtr();
return 0;
}
链接到在线编译器:https://onlinegdb.com/SJAFJCy0Z
答案 0 :(得分:3)
检查数据类型!!
您的函数承诺返回innerStruct *
,而您的代码会尝试返回innerStruct
。它们既不相同也不兼容。修复或正确使用它。
在函数调用之后,您可能想要编写
return &(ptr->inner); // return type innerStruct *