螺旋矩阵输出中语句的含义?

int Matrix::PrintMatrixExist(int** numbers, int columns, int rows)
{
if(numbers == NULL || columns <= 0 || rows <= 0)
return false;

    int startX = 0;
    int startY = 0;

    while(columns > startX * 2 && rows > startY * 2)// 让循环继续的条件
    {
            PrintMatrixInCircle(numbers, columns, rows, startX, startY);

            ++startX;
            ++startY;
    }
    return true;

}
这个语句中为什么int startx=0; int starty=0;
和++startx; ++starty;

void Matrix::PrintAColumnIncreasingly(int** numbers, int columns, int rows,int x, int firstY, int lastY)
{
for(int i = firstY; i <= lastY; ++i)
{
int number = ((numbers + i) + x);//这条语句的含义?
printf("%d\t", number);

}

}

初始化通过参数传进的两个数组,即初始化螺旋矩阵,并将两个矩阵并排显示

https://blog.csdn.net/beautifulzc/article/details/54709809