/* 使用一维数组型指针作为二维数组形参 */ #include #define ROW_SIZE 3 #define COL_SIZE 3 void print_array(int (*p)[COL_SIZE], const int row) { int i, j; for (i = 0; i < row; ++i) { for (j = 0; j < COL_SIZE; ++j) printf("%4d", *(*p + j)); printf("\n"); ++p; } } void reverse(int (*p)[COL_SIZE], const int row) { int i, j; for (j = 0; j < COL_SIZE; ++j) { for (i = 0; i < row; ++i) printf("%4d", *(*(p + i) + j)); printf("\n"); } } int main(void) { int array[ROW_SIZE][COL_SIZE] = { { 1, 2, 3 }, { 11, 12, 13 }, { 21, 22, 23 } }; printf("Output the matrix:\n"); print_array(array, ROW_SIZE); printf("Reverse the matrix:\n"); reverse(&array[0], ROW_SIZE); return 0; }