当我编译我的程序时,我收到一个错误告诉我: "分配给类型' struct timeStamp *'时不兼容的类型来自type' struct timeStamp'"
我不知道什么是错的...... 也许这是结构中的结构问题?
非常感谢你的帮助! 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:
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);
答案 0 :(得分:1)
你的函数应该返回一个指针
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()
的结果投反对票。