I saw some codes on the web and trying to figure out how this works. I tried to leave comments on each lines but I cannot understand why y[0] changes to 5555. I'm guessing y[0] might change to numbers[0], but why? 
x value is still 1. Well.. is this because y[0] = 1; has no int data type?
#include using namespace std;
void m(int, int []);
/*this code explains a variable m that m consists of two parts, int and int array*/
int main()
{
  int x = 1; /* x value is declared to 1*/
  int y[10]; /*Array y[10] is declared but value is not given*/
  y[0] = 1; /*Array y's first value is declared to 1 but data type is not given*/
  m(x, y); /*This invokes m with x and y*/
  cout << "x is " << x << endl; 
  cout << "y[0] is " << y[0] << endl;
  return 0;
}
void m(int number, int numbers[]) /*variable names in m are given, number and numbers.*/
{
  number = 1001; /*number has int 1001 value*/
  numbers[0] = 5555; /*This overrides y to numbers[], so y[0] =1 changes to numbers[0] = 5555.*/
}
/*This program displays 
 * x is 1
 * y[0] is 5005
 * y[0] value has changed but x has not.
 * */
 
     
    