/* day_mon1.c -- prints the 
days for each month */ 
#include <stdio.h>
#define MONTHS 12 
int main(void)
int days[MONTHS = {31,28,31,30,31,30,31,31,30,31,30,31}; 
int index; for (index = 0;
index < MONTHS; index++) 
printf("Month %d has %2d 
days.\n", index +1,
return 0; 

While trying to understand array, pointer in Week 2, I came across the above code (Source: C Primer Plus, Stephen Prata). Particularly, I cannot understand why days[index].

How is that int days [MONTHS] is replaced by days[index]? Is it that an array which is MONTHS in this case can be replaced by other variables (index in this case) while carrying out printf?

Not sure why this command will not compile:

printf("Month %d has %2d days.\n", index +1, days[MONTHS]);

To me, using days[MONTHS] instead of days[index] looks more plausible. I know I am missing in some key concept.

1 Answer 1


Okay, the for loop is with is with index as variable. It is acting as a counter.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .