最近码代码时遇到一个返回值的问题,一直报warning,后来查了下资料才知道原因,现在做下记录。
typedef struct
{
int a;
int b;
}Test_T;
Test_T c[3];
Test_T* fun(void)
{
return &c;
}
一开始是这样写的,但是在return的地方报 warning: return from incompatible pointer type [enabled by default]
,然后我又查了下关于***数组首地址***的问题,可参考
https://blog.csdn.net/zjq1042970687/article/details/107929904
果然是这里的问题,函数是Test_T
类型的,而&c
是代表数组首地址,严格来说是Test_T[]
类型的,返回类型与函数类型不一致,因此会出现warning
。此处应该用return c
或者return &c[0]
。