Flipping an image
/**
* Return an array of arrays of size *returnSize.
* The sizes of the arrays are returned as *columnSizes array.意思是返回一個(gè)指針指向一個(gè)數(shù)組蔗喂,所以才會(huì)是指針的指針作喘,不要片面理解為指向二維數(shù)組
*注意返回指向一個(gè)數(shù)組的指針和指向一個(gè)二維數(shù)組的指針
* 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個(gè)指針的指針纤掸,指針指向的空間大小為void
*columnSizes = (int*)malloc(sizeof(int) * ARowSize);//新建ARowSize個(gè)指針哲虾,指針指向的空間大小為int大小
for (int i = 0; i < ARowSize; i ++) {
int* one = A[i];//指針指向該行第一個(gè)int
int* newone = (int*)malloc(sizeof(int) * colsize);//新建一個(gè)空行店读,行元素為int大小
for (int j = 0; j < colsize; j ++) {
int t = one[j];
if (t == 1) t = 0;
else t = 1;//取j位置值并反轉(zhuǎn)
newone[colsize - j - 1] = t;//放置在空行對(duì)稱位置
}
retarr[i] = newone;//行指針指向該行
(*columnSizes)[i] = colsize;//
}
return retarr;//返回指針的指針
}
//該int** columnSizes指針僅僅只使用了第一行,后面的行沒有使用