如何使结构指向前一个数组值

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 );