如何使结构指向前一个数组值
How to make struct point to previous array value
我的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;
};
不太清楚你在找什么,你显示的代码是错误的。那里根本没有指针。
如果你想在你需要的时间表数组中访问Class的不同实例
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;
};
但是,这是一个巨大的但是,如果这是数组中的第一个元素,这将非常糟糕。
我仍然会通过传递索引来做到这一点。
看来您需要如下内容
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 );
我的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;
};
不太清楚你在找什么,你显示的代码是错误的。那里根本没有指针。
如果你想在你需要的时间表数组中访问Class的不同实例
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;
};
但是,这是一个巨大的但是,如果这是数组中的第一个元素,这将非常糟糕。
我仍然会通过传递索引来做到这一点。
看来您需要如下内容
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 );