Changes to array not reflected Here's a simple sketch. I have an array data and a variable idx. 
I'm assigning a value to each of the array element, and then sending them to my serial monitor.

volatile uint16_t data[5];
volatile uint16_t idx = 5;


void setup() {
  Serial.begin(9600);

  while (!Serial) { }
  Serial.println("\nHello!");

  data[0] = 1010;
  data[1] = 1011;
  data[2] = 1012;
  data[3] = 1013;
  data[4] = 1014;

  for(int i = 0; i&lt; idx; ++i)
  {
    Serial.print(data[idx]);
    Serial.write(",");
  }

  while(1){  }
}

void loop() {}


When I look into my serial monitor, I get this:

Hello!
0,0,0,0,0,


Why is this happening? Did I overlook something fundamental? I'd appreciate if you could offer your thoughts on this. 

I'm testing this code on Arduino Mega2560.
You got confused here:

Serial.print(data[idx]);


You're printing array slice 5 (the sixth entry in a 5 entry array) 5 times.

You probably meant to write:

Serial.print(data[i]);


To improve clarity you may want to #define it instead:

#define DATA_SIZE 5
uint16_t data[DATA_SIZE];

... 

for (int i = 0; i &lt; DATA_SIZE; i++) {
    ....
}


Or you can do it the other way round (get the size from the array):

uint16_t data[5];
#define DATA_SIZE (sizeof(data) / sizeof(data[0]))