设为首页 加入收藏

TOP

关于C语言中二维数组传参(一)
2014-04-06 17:42:22 来源: 作者: 【 】 浏览:521
Tags:关于 言中 二维数

       直接上代码:

  #include

  void Fun(int *a[],int m,int n)//

  {

  printf("%d\t",*a);//[0][0]

  /*

  int e ={8,7,6,5,4,3,2,1};

  int *f,***g;

  g=e;

  f=e;//有警告,但不会报错

  printf("%d\n",*f);

  */

  }

  /*解释:

  Fun()中的int *a 表示定义指针数组a ,a[0],a 存储的都是指针,

  a表示的是数组的首地址,所以相当于二级指针。(解释了实参为什么要是二级指针)

  a既然是指针,赋值时,实参的指针值复制给a,于是*a就表示a[0][0];

  指针的等级只能说明指针的多级指向也是指针,传参时会检查指针等级是否匹配

  但指针存储的都是地址值,地址值改变以后,如指向存储int型数据的存储空间,那么

  前面加*就表示的便是这个int型数

  不同等级的指针之间可以赋值。(解释了*a=4,但**a是错的)*/

  void Fun1(int (*a)[],int m,int n)//int **a会有警告

  {

  printf("%d\t",**a); //int (*a) 可以完全用数组来操作

  //int (*a)[] 只能用指针来操作数据

  }

  /*如果为int (*a)[];数组指针,指向数组的指针,二级指针;

  表示数组a[]的地址,老谭称之为"行指针"*/

  int main()

  {

  int a ={4,5,6,1,2,3};

  Fun((int **)a,3,2);//

  Fun1(a,3,2);//(int **)

  return 0;

  }

   

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C语言内存分配函数malloc 下一篇C语言结构体相关函数 指针

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: