Flipping an image
/**
* Return an array of arrays of size *returnSize.
* The sizes of the arrays are returned as *columnSizes array.意思是返回一个指针指向一个数组,所以才会是指针的指针,不要片面理解为指向二维数组
*注意返回指向一个数组的指针和指向一个二维数组的指针
* Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().
*/
int** flipAndInvertImage(int** A, int ARowSize, int *AColSizes, int** columnSizes, int* returnSize) {
*returnSize = ARowSize;//row size
int colsize = *AColSizes;//col size
int** retarr = (int**)malloc(sizeof(void*) * ARowSize);//新建ARowSize个指针的指针,指针指向的空间大小为void
*columnSizes = (int*)malloc(sizeof(int) * ARowSize);//新建ARowSize个指针,指针指向的空间大小为int大小
for (int i = 0; i < ARowSize; i ++) {
int* one = A[i];//指针指向该行第一个int
int* newone = (int*)malloc(sizeof(int) * colsize);//新建一个空行,行元素为int大小
for (int j = 0; j < colsize; j ++) {
int t = one[j];
if (t == 1) t = 0;
else t = 1;//取j位置值并反转
newone[colsize - j - 1] = t;//放置在空行对称位置
}
retarr[i] = newone;//行指针指向该行
(*columnSizes)[i] = colsize;//
}
return retarr;//返回指针的指针
}
//该int** columnSizes指针仅仅只使用了第一行,后面的行没有使用
网友评论