【发布时间】:2017-06-17 14:48:15
【问题描述】:
我有一个struct,里面有几天。我用 Eclipse 编写了一些长代码,并将结构放在与 main() 不同的文件中的 C 文件中。现在,在main() 中,我编写了一个函数,该函数转到struct 并更新day 字段——由于某种原因,该字段没有更新。我尝试对此进行调试,但如果我放置断点(Eclipse 问题),调试器会突然停止——即使代码有效,但我得到的结果是错误的。所以我添加了printf 来查看这些字段是否真的更新了,我发现它们没有。
这里是struct:
typedef struct roomorder_t* Roomorder;
struct roomorder_t {
int room_id;
int days_till_order;
int order_hour;
};
// function in the same c file that updates the day
void updateRoomOrderDay(Roomorder roomorder){
int curr_day=roomorder->days_till_order;
curr_day-=1;
return;
}
int GetRoomOrderDaysTillOrder(Roomorder roomorder){
if(roomorder==NULL){
return FAIL;
}
return roomorder->days_till_order;
}
// here how i used the function in the main file to update :
static void EscapeUpdateDay(Escape escape){
// here i wrote a code to find the roomorder struct i am
//looking
//for to update and i found it (curr_order)
Roomorder curr_order=setGetFirst(roomorders);
printf("days_till_order_before=d\n",GetRoomOrderDaysTillOrder(curr_order));
updateRoomOrderDay(curr_order);
printf("days_till_order_after=%d\n",GetRoomOrderDaysTillOrder(curr_order));
}
更新:好的,所以当天确实更新了,但发生了相反的情况!我加了一个 printf 和一个解释发生了什么的例子:我打印了这一天 在更新之前和之后,它确实发生了变化,但不是 例如减去一天它增加了一天:
//days_till_order_before=7 (before the update)
//days_till_order_after=8 (after the update)
// 我也确实将 updateRoomOrderDay 函数更改为您所说的 我。
roomorder->days_till_order-=1;
我做错了什么?
【问题讨论】:
-
你需要阅读关于指针的章节
-
不,我现在不想更改所有内容并使用指针!!
-
代码非常长,而且一切正常,但是这个!我只想知道这是错的吗??
-
请不要更改帖子,以免答案不再有意义。添加到文章末尾
-
我以为我在写东西,哈哈,好吧,我真的很抱歉!