gpt4 book ai didi

C - 作为返回值的结构不适合

转载 作者:太空宇宙 更新时间:2023-11-04 03:41:30 25 4
gpt4 key购买 nike

当我编译我的程序时,我收到一条错误消息:“从类型‘struct timeStamp’分配给类型‘struct timeStamp *’时类型不兼容”

我不知道哪里出了问题...可能是struct in struct的问题?

非常感谢您的帮助!THX - 亲切的问候!

这是我的垃圾代码...

结构声明:

struct timeStamp {
int year;
int mon;
int day;
int hour;
int min;
};

struct weatherData {
float temp;
float hum;
int lum;
int wind;
struct timeStamp *weatherStamp;
struct weatherData *pN;
};

应该返回一个结构的函数 timeManipulate:

struct timeStamp timeManipulate(struct tm *timeinfo) {
timeinfo->tm_min -= 10;
mktime(timeinfo);

struct timeStamp *tS = NULL;
tS = (struct timeStamp*)malloc(sizeof(struct timeStamp));
if (tS==NULL)
perror("Allocation Error");

tS->year = (timeinfo->tm_year)+1900;
tS->mon = (timeinfo->tm_mon)+1;
tS->day = timeinfo->tm_mday;
tS->hour = timeinfo->tm_hour;
tS->min = timeinfo->tm_min;
return *tS;
};

在 main() 中,我想将“timeManipulate”返回的结构分配给另一个结构:

struct weatherData *pNew = NULL;
pNew->weatherStamp = timeManipulate(timeinfo);

最佳答案

你的函数应该返回一个指针

struct timeStamp *timeManipulate(struct tm *timeinfo)
/* ^ make the function return a struct tiemStamp pointer */

返回值应该是

return tS;

另外,你的

if (ts == NULL)
perror("Allocation Error");

仍然会解引用 NULL 指针,它应该是这样的

if (ts == NULL)
{
perror("Allocation Error");
return NULL;
}

这当然行不通

struct weatherData *pNew = NULL;
pNew->weatherStamp = timeManipulate(timeinfo);

你也必须为 pNew 分配空间。

最后不要转换不需要的 malloc() 的结果。

关于C - 作为返回值的结构不适合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28120535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com