我schedule->start.hour指向陣列的當前元素。如何使它指向陣列的前一個元素?
struct Time {
int hour;
} start, end;
struct Class {
struct Time start, end;
} schedule[100];
我需要在一個函式中使用它,它將當前的開始設定為等于前一個的結束。
void add_class(struct Class shedule[]){
schedule->start.hour=schedule*(--).end.hour;
};
uj5u.com熱心網友回復:
看來您需要以下內容
void add_class( struct Class shedule[], size_t n )
{
for ( size_t i = 1; i < n; i )
{
shedule[i].start.hour = shedule[i-1].end.hour;
}
//...
}
并且該函式被稱為
add_class( shedule, sizeof( shedule ) / sizeof( *shedule ) );
或喜歡
add_class( shedule, 100 );
uj5u.com熱心網友回復:
它不是很清楚你在追求什么,你顯示的代碼是錯誤的。那里根本沒有指標。
如果要訪問調度陣列中的不同類實體,則需要
schedule[0].start.hour;
schedule[1].start.hour;
....
遍歷它們
for(int i = 0; i < 100; i ){
printf("start=%d, end = %d\n",schedule[i].start.hour, scehdule[i].end.hour);
}
如果你有一個指向 Class 實體的指標
void add_class(struct Class shedule[]){
...
};
您可以像這樣訪問陣列中的先前條目
void add_class(struct Class schedule[]){
struct Class *prior = schedule - 1;
schedule->start.hour=prior->end.hour;
};
但是,這是一個巨大的但是,如果這是陣列中的第一個元素,這將是非常糟糕的。
我仍然會通過傳遞索引來做到這一點。
uj5u.com熱心網友回復:
由于schedule是指標,因此將其遞減或使用(schedule - 1).
BTW,而不是schedule->start.hour你可以寫schedule[0].start.hour,然后schedule[-1].start.hour將訪問前一個元素的開始時間。
請確保那里有一個元素。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/442962.html
