Help! I am new to C++ and need to write a routine to pass a 2 dimensional array into a function that will determine whether or not the array is a Magic Square. On the function call:

IsMagic = TestMagic(myArray[500][500], dimension);

I get the error

passing `int' to argument 1 of `TestMagic(int(*)[500], int)' lacks a cast.

Why? And why does it show as int(*)[500] instead of int[500][500]?

Thanks

Andrew

Code:
#include<iostream.h>

           
   bool TestMagic(int PassedSquare[500][500], int ArrayDimension)
//this is not yet all of the code that will go into this function   
   {
      int sum;	
      for (int x = 1; x <= ArrayDimension; x++)
      {
         sum = sum + PassedSquare[x][x];
      }
   
      cout << endl;	
      cout << "Left-Right Diagonal is: " << sum;
      return true;
   }

           
   int main()
           
   {
      int myArray[500][500];
      int dimension;
      bool IsMagic;
   
      cout << "Enter array size (minimum 1, maximum 500), or 0 to exit the program: ";
      cin >> dimension; //user enters desired array size
   
      while (dimension > 0)
      {
      //instruct user to enter a value for each array element
         for (int x = 1; x <= dimension; x++)
         {
            for (int y = 0; y < dimension; y++)
            {
               cout << "Enter the value for " << x << ", " << y << ": ";
               cin >> myArray[x][y];
               cout << endl;
            }
         }
      
      	//call function TestMagic and pass it the array and its dimensions
//this is where I get the error
         IsMagic = TestMagic(myArray[500][500], dimension); 	
      
         if (IsMagic = true) 
            cout << "Yes";
         else	
            cout << "No";
      
         cout << endl;
         cout << "Enter array size (minimum 1, maximum 500), or 0 to exit the program: ";
         cin >> dimension; //user enters desired array size	
      }
      return 0;
   }