【发布时间】:2017-10-27 00:11:51
【问题描述】:
我静态定义了一个myStruct,在结构内部,我有一个大小为 3 的 innerStruct 数组。我想返回一个指向该数组的指针,这样我就可以分配一个本地指针来指向其中的一个元素以便稍后修改这些值。
在某种程度上,我的编译器似乎告诉我我正在返回一个 int 而不是 innerStruct * 类型。
我该如何正确地做到这一点? 需要双指针吗?
#include <stdio.h>
typedef struct
{
int content;
} innerStruct;
typedef struct
{
int a;
innerStruct inner[3];
} myStruct;
static myStruct m1;
innerStruct * getMyStructPtr()
{
return &(m1.inner);
}
int main()
{
int id = 0;
int elem = 1;
/* Define a local ptr so I can modify values of the m1 struct */
innerStruct * local_ptr = NULL;
innerStruct * myStruct_ptr = getMyStructPtr(); // seems like my compiler tells me I'm returning an int instead of innerStruct * type
/* Point to one of the elements */
local_ptr = &myStruct_ptr[elem];
local_ptr->content = 123;
return 0;
}
在线代码编译器链接:https://onlinegdb.com/BJNO9lxA-
【问题讨论】:
-
我希望它是静态分配的,而不是动态分配的。
-
你只需要
return m1.inner;。 -
@KerrekSB 那不是返回
innerStruct而不是innerStruct *吗? -
它为什么会做这样的事情?
m1.inner的类型是innerStruct[3],而不是innerStruct。 -
@KerrekSB 我明白了。但我希望它返回一个指针。