-2

可能重复:
将多维数组传递给函数 C

我想将二维结构传递给函数这是函数的原型和定义以及函数的“typedef”。

typedef struct {
BOOLEAN valid;
event_t event_list [MAXEVS];
int num_events;
} calentry_t;

calentry_t calendar[12] [31]; // The declaration of the structure

我如何创建将传递给它的二维结构的函数的定义以及我如何传递它请有人发现我的错误

InitializeCalendar (calentry_t *calendar){
   int x, y;
for(x = 0; x < 12; x ++) {
    if (x==2){
            for(y = 0; y <= 28; y ++){ 
                (*calendar).calendar[x][y].valid = TRUE;
            }
            for (y=29; y<= 31; y++){
                (*calendar[x][y]).valid = FALSE;
        }
    }
    else if  (x==4 || x==6 || x==9 || x==11){
        for(y = 0; y <= 30; y ++){ 
            (*calendar[x][y]).valid = TRUE;
            }
            for (y=30; y<= 31; y++){
                (*calendar)[x][y].valid = FALSE;
            }
        }
    }
}
4

2 回答 2

0

将二维结构包裹在另一个结构中。

typedef struct {
BOOLEAN valid;
event_t event_list [MAXEVS];
int num_events;
} calentry_t;

typedef struct {
    calentry_t calEntries[12][31];
} calendar_t;


calendar_t calendar;

InitializeCalendar(&calendar);


void InitializeCalendar(calendar_t *calendar)
{
    // for example
    calendar->calEntries[0][0].valid = TRUE;
}
于 2012-09-18T18:50:55.813 回答
0
void foo(calentry_t mycal[12] [31]) {
  mycal[0][1].valid =1;
}

int main(void) {
  foo(calendar);
  printf("valid: %d\n", calendar[0][1].valid);
}
于 2012-09-18T17:04:31.463 回答