c - 在 C 中为内部结构返回类型时不兼容的类型

标签 c pointers struct

我有一个要在编译时静态分配的结构,但我不确定如何返回指向内部结构的指针。

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

最佳答案

检查数据类型!!

您的函数 promise 返回一个 innerStruct *,而您的代码试图返回一个 innerStruct。它们既不相同也不兼容。修复其中一个并适本地使用它。

在函数调用之后,您可能想要编写

 return &(ptr->inner);  // return type innerStruct * 

关于c - 在 C 中为内部结构返回类型时不兼容的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46963906/

相关文章:

c - strcat() 的访问冲突

c++ - 进程的内存空间从哪里开始,到哪里结束?

c++ - Valgrind 在通过指向结构的指针访问结构成员时提示无效读取

将指针转换为更大的 int

C - 链表

c - 返回字符串数组并将其分配给 C 中的变量

pointers - 调用结构函数给出 "cannot refer to unexported field or method"

c++ - 在 std::multiset (C++) 中协调 typedef 和结构

c - 使用 fflush(标准输入)

c++ - 对指针列表进行排序