C语言—函数和多维数组

作者:追风剑情 发布于:2019-10-13 13:21 分类:C

示例

  1. //Visual Studio中加上这句才可以使用scanf()
  2. //否则只能使用scanf_s()
  3. #define _CRT_SECURE_NO_WARNINGS
  4. #include <stdio.h>
  5. #include <stdbool.h>
  6.  
  7. #define ROWS 3
  8. #define COLS 4
  9. void sum_rows(int ar[][COLS], int rows);
  10. void sum_cols(int [][COLS], int);//省略形参名
  11. int sum2d(int (*ar)[COLS], int rows);//指针表示法
  12.  
  13. //多维数组只能省略最左边括号的大小,如ar[][2][3]
  14. //ar[2][3] 第1个括号里的2会被编译器忽略
  15.  
  16. //编译器会将数组表示法转成指针表示法(因为处理指针效率更高)
  17.  
  18. //argc: 参数个数 argv[]: 参数数组
  19. int main(int argc, char *argv[])
  20. {
  21. int junk[ROWS][COLS] = {
  22. {2, 4, 6, 8},
  23. {3, 5, 7, 9},
  24. {12,10,8, 6}
  25. };
  26.  
  27. sum_rows(junk, ROWS);
  28. sum_cols(junk, ROWS);
  29. printf("Sum of all elements = %d\n", sum2d(junk, ROWS));
  30.  
  31. system("pause");
  32. return 0;
  33. }
  34.  
  35. void sum_rows(int ar[][COLS], int rows)
  36. {
  37. int r;
  38. int c;
  39. int tot;
  40. for (r = 0; r < rows; r++)
  41. {
  42. tot = 0;
  43. for (c = 0; c < COLS; c++)
  44. tot += ar[r][c];
  45. printf("row %d: sum = %d\n", r, tot);
  46. }
  47. }
  48.  
  49. void sum_cols(int ar[][COLS], int rows)
  50. {
  51. int r;
  52. int c;
  53. int tot;
  54. for (c = 0; c < COLS; c++)
  55. {
  56. tot = 0;
  57. for (r = 0; r < rows; r++)
  58. tot += ar[r][c];
  59. printf("col %d: sum = %d\n", c, tot);
  60. }
  61. }
  62.  
  63. int sum2d(int ar[][COLS], int rows)
  64. {
  65. int r;
  66. int c;
  67. int tot = 0;
  68. for (r = 0; r < rows; r++)
  69. for (c = 0; c < COLS; c++)
  70. tot += ar[r][c];
  71. return tot;
  72. }

运行测试
1111.png

标签: C语言

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号