int** generateMatrix(int n, int* returnSize, int** returnColumnSizes)
{
*returnSize=n;
*returnColumnSizes = (int*)malloc(sizeof(int) * n);
int** arr=(int*)malloc(sizeof(int*)*n);
int i;
for(i = 0; i < n; i++)
{
arr[i] = (int*)malloc(sizeof(int) * n);
(*returnColumnSizes)[i] = n;
}
int loop=n/2;//循环次数即矩阵圈数
int count=1;
int mid=n/2;//如果mid为奇数,要在最中间补上count++
int offset=1;
int startx=0;
int starty=0;
while(loop--)
{
int i=startx;
int j=starty;
//从左到右(左开右闭)
while(j<starty+n-offset)
{
arr[i][j]=count++;
j++;
}
//从上到下
while(i<starty+n-offset)
{
arr[i][j]=count++;
i++;
}
//从右到左
while(j>starty)
{
arr[i][j]=count++;
j--;
}
//从下到上
while(i>startx)
{
arr[i][j]=count++;
i--;
}
//循环完一圈
offset+=2;
startx++;
starty++;
}
if(n%2)
{
arr[mid][mid]=count;
}
return arr;
}
malloc不是已经开辟了一块空间了了吗