1.  
  1. #include <stdio.h>
  2. /*********************************
  3. * 方法1: 第一维的长度可以不指定 *
  4. * 但必须指定第二维的长度 *
  5. *********************************/
  6. void print_a(double a[][], int n, int m)
  7. {
  8. int i, j;
  9.  
  10. for (i = ; i < n; i++)
  11. {
  12. for (j = ; j < m; j++)
  13. {
  14. printf("%lf ", a[i][j]);
  15. }
  16.  
  17. printf("\n");
  18. }
  19. //printf("%d ", a[1][0]+a[2][0]);//输出3+6,
  20. //a[4][4]=a[1][0]+a[2][0]; //即验证是不是真能直接操作数组,答案是可以
  21. }
  22. /**************************************************************
  23. *方法2: int (*a)[5]是指向一个一维数组(有5个int型元素)的指针,
  24. *因为原数组每行有5个元素,故int (*a)[5]中必须为5
  25. *而*a[N]是一个指针数组,也就是一个数组,里面有N个指针
  26. *而(*a)[N]是一个指向数组的指针,也就是一个指针,指向一个含有N个元素的数组
  27. **************************************************************/
  28. void print_b(double(*a)[], int n, int m)
  29. {
  30. int i, j;
  31.  
  32. for (i = ; i < n; i++)
  33. {
  34. for (j = ; j < m; j++)
  35. printf("%lf ", a[i][j]);
  36.  
  37. printf("\n");
  38. }
  39. }
  40. /***********************************
  41. *方法3: 利用数组是顺序存储的特性,
  42. * 通过降维来访问原数组!
  43. ***********************************/
  44. void print_c(double *a, int n, int m)
  45. {
  46. int i, j;
  47.  
  48. for (i = ; i < n; i++)
  49. {
  50. for (j = ; j < m; j++)
  51. printf("%lf ", *(a + i*m + j)); //指针的偏移
  52.  
  53. printf("\n");
  54. }
  55. }
  56.  
  57. /***********************************
  58. *方法4: 利用数组指针(指向数组的指针)来访问数组,这个数
  59. 组指针double (*a)[5][5]存放的是其所指向的数组的首地址,注意不是数组首元素的首地址
  60. * 通过降维来访问原数组!
  61. ***********************************/
  62. void print_d(double(*a)[][], int n, int m)
  63. {
  64. int i, j;
  65.  
  66. for (i = ; i < n; i++)
  67. {
  68. for (j = ; j < m; j++)
  69. printf("%lf ", (*a)[i][j]);
  70.  
  71. printf("\n");
  72. }
  73. }
  74.  
  75. int main(void)
  76. {
  77. double a[][] = { { 1.0, 2.0 }, { 3.0, 4.0, 5.0 }, { 6.0 }, { 7.0 }, { 0.0, 8.0 } };
  78.  
  79. printf("\n方法1:\n");
  80. printf("输出a:%d\n", a);
  81. print_a(a, , );// a double (*)[1]
  82. printf("%lf ", a[][] + a[][]);//输出3+6,
  83.  
  84. printf("\n方法2:\n");
  85. printf("输出a:%s\n", a);
  86. print_b(a, , );
  87.  
  88. printf("\n方法3:\n");
  89. printf("输出&a[0][0]:%d\n", &a[][]);
  90. printf("输出&a:%d\n", &a);
  91. printf("输出a:%d\n", a);
  92. print_c(&a[][], , ); //&a是会警告的,&a[0][0]才最好。。&a 是整个数组的首地址,a是数组首元素的首地址
  93.  
  94. printf("\n方法4:\n");
  95. print_d(&a, , );//&a 是整个数组的首地址
  96.  
  97. getchar();
  98. return ;
  99. }

c语言 四种方法调用数组的更多相关文章

  1. C语言三种方法调用数组

    #include <stdio.h> /********************************* * 方法1: 第一维的长度可以不指定 * * 但必须指定第二维的长度 * *** ...

  2. JS去除数组中重复值的四种方法

    JS去除数组中重复值的四种方法 1 /// <summary>            o[this[i]] = "";  }      }       newArr.p ...

  3. C语言中函数返回字符串的四种方法

    在讨论着四种方法之前,首先要对函数有一个简单的认识,无论是在形实结合时,还是在return语句返回时,都有一个拷贝的过程.你传进来的参数是个值,自然函数在工作之前要把这个值拷贝一份供自己使用,你传进来 ...

  4. JS 中检测数组的四种方法

    今天和大家分享一下 JS 中检测是不是数组的四种方法,虽然篇幅不长,不过方法应该算是比较全面了. 1. instanceof 方法 instanceof 用于检测一个对象是不是某个类的实例,数组也是一 ...

  5. C# byte[]数组和string的互相转化 (四种方法)

    C# byte[]数组和string的互相转化 (四种方法) 第一种 [csharp] view plain copy string str = System.Text.Encoding.UTF8.G ...

  6. JavaScript数组去重的四种方法

    今天,洗澡的想一个有趣的问题,使用js给数组去重,我想了四种方法,虽然今天的任务没有完成,5555: 不多说,po代码: //方法一:简单循环去重    Array.prototype.unique1 ...

  7. PHP从数组中删除元素的四种方法实例

    PHP从数组中删除元素的四种方法实例 一.总结 一句话总结:unset(),array_splice(),array_diff(),array_diff_key() 二.PHP从数组中删除元素的四种方 ...

  8. 判断数组的方法/判断JS数据类型的四种方法

    参考文: 以下 3 个判断数组的方法,请分别介绍它们之间的区别和优劣Object.prototype.toString.call() . instanceof 以及 Array.isArray() h ...

  9. iOS-UITextField中给placeholder动态设置颜色的四种方法

    思路分析: 0.自定义UITextField 1.设置占位文字的颜色找-->placeholderColor,结果发现UITextField没有提供这个属性 2.在storyboard/xib中 ...

随机推荐

  1. JQuery EasyUI的datagrid的使用方式总结

    JQuery EasyUI的datagrid的使用方式总结第一步:添加样式和js脚本在前台添加展示数据表格的table元素 例如: <div> <table id="tt& ...

  2. MVC(二)

    所谓EF延迟加载,就是使用Lamabda或Linq查询数据时,EF并不会将数据直接查询出来,而是在用到的这个查询结果的时候才会加载到内存中.延迟加载也可以理解成 按需加载,顾名思义,就是按照所需的数据 ...

  3. win8win10以管理员身份运行cmd方法

    win8win10以管理员身份运行cmd方法 Win7/8下提示OpenSCManager failed 拒绝访问Maven nexus 安装nexus : wrapper | OpenSCManag ...

  4. 纯CSS气泡效果

    http://www.liaoxuefeng.com/article/0013738937970388b6b6e5e5e2f4e21b65b01807c84ddf6000

  5. [已解决] 点击 【Show in system explorer】Eclipse卡死,未响应

    新版的Eclipse自带了 [Show in system explorer] 功能很方便,有一天突然不好用了,点它Eclipse就卡死, 可能由以下原因导致的: (可能性最大)windows本身有问 ...

  6. mongoDB windows安装

    http://www.mongodb.org/ mongodb的官方文档. http://www.cnblogs.com/lipan/archive/2011/03/08/1966463.html  ...

  7. Editplus配置VC++(1) 及相关注意事项

    下篇文章:Editplus配置VC++(2) 与/d1reportSingleClassLayout 原本用的是VC++2010 现在换成了Visual Studio 2013,editplus相关配 ...

  8. VC++6.0在Win7以上系统上Open或Add to Project files崩溃问题 解决新办法

    崩溃原因是和office高版本冲突,比如我64位win7装了64位office2013及visio就遇到了这个问题(我很纳闷,记得重装系统前装的是32位office2013及visio就未曾遇到该问题 ...

  9. Flowplayer-encoding

    SOURCE URL: https://flowplayer.org/docs/encoding.html Video encoding To ease the task of encoding yo ...

  10. CSS3的chapter2

    CSS的选择符有很多,大致分为八种: 通配选择符 元素选择符 群组选择符 关系选择符 id及class类选择符 伪类选择符 属性选择符 伪对象选择符 1.通配选择符: 可以使用模糊指定的方式来对对象进 ...