数组转置(函数指针,回调函数)

  1 #include <stdio.h>
  2 
  3 int funk(int (*a)[3], int (*b)[2])
  4 {
  5         int i, j;
  6 
  7         for(i=0; i<2; i++)
  8                 for(j=0; j<3; j++)
  9                         *(*(b+j)+i) = *(*(a+i)+j);
 10 }
 11 
 12 int funk1(int ( (*p)(int (*)[3], int (*)[2])), int (*a)[3], int (*b)[2])
 13 {
 14         p(a, b);
 15 }
 16 
 17 int main()
 18 {
 19         int arr[2][3] = {{3, 6, 2}, {9, 7, 4}};
 20         int brr[3][2] = {0};
 21         int i, j;
 22 
 23         for(i=0; i<2; i++){
 24                 for(j=0; j<3; j++){
 25                         printf("%d ", *(*(arr+i)+j));
 26 
 27                 }
 28 
 29                 printf("
");
 30         }
 31 
 32 //      funk(arr, brr);
 33         int (*p)(int (*)[3], int (*)[2]) = funk;
 34 //      p(arr, brr);    
 35         funk1(p, arr, brr);
 36 
 37         for(i=0; i<3; i++){
 38                 for(j=0; j<2; j++){
 39                         printf("%d ", *(*(brr+i)+j));// 将brr 写成 arr,无言以对。
 40 
 41                 }
 42                 printf("
");
 43         }
 44 
 45 }
© 版权声明
文章版权归作者所有,未经允许请勿转载。【QQ交流:115124903】
THE END
原文地址:https://www.cnblogs.com/luoxiang/p/4036201.html