在编写简单代码时遇到了一些问题。 当我使用clion debug时,我得到“ 日期是:1990年1月1日,下一个日期是-1084227472.32648 ”
但是当我放置断点并最终遵循代码时,我得到了正确的答案 答案为“ 日期为:1990年1月1日,下一个日期为22.1 ”
typedef struct date_t* Date;
struct date_t{
int day;
int month;
int year;
Date nextDay;
};
Date dateCreate(int day, int month, int year){
Date newDate = malloc(sizeof(newDate));
newDate->day = day;
newDate->month = month;
newDate->year = year;
Date next = malloc(sizeof(*next));
next->day = day+1;
next->month = month;
next->year = year;
newDate->nextDay = next;
return newDate;
}
void printDate(Date date){
printf("the date is: %d/%d/%d and next date is %d.%d \n", date->day,date->month,date->year, date->nextDay->day,date->nextDay->month);
}
int main() {
Date d1 = dateCreate(21,01,1990);
printDate(d1);}
答案 0 :(得分:2)
欢迎来到臭名昭著的不确定行为的神秘世界。
这里
Date next = malloc(sizeof(*next));
您做对了。
这里
Date newDate = malloc(sizeof(newDate));
你不知道。
后者应该是
Date newDate = malloc(sizeof(*newDate));