zoukankan      html  css  js  c++  java
  • 使用指针传递二维数组参数

       在c语言中,有的时候会需要传递一个二维数组给函数。然而直接传递二维数组并不像传递一维数组那样容易,我们最好是借用指针来传递二维数组。

      要用指针传递二维数组,则必须对二维数组的储存方式有个了解。二维数组在内存中其实也是按照一个序列来排列的,毕竟内存只有高低之分,只有一个方向。因此,二维数组的储存实现是一行行来存储的,存完一行再存下一行,并且是紧挨着存储。

      比如定义int a[3][4],那么每行有4个数,一共3行。用指针p来表示数组,int *p;*p = &a[0][0],那么要用p表示a[2][1],就是*(p+2*4+1),这样就能通过传递指针p和表示二维数组长度的数来传递二维数组。

     1 /*测试用指针传递二维数组*/
     2  /*by telnetning 13.3.20*/
     3  
     4  #include <stdio.h>
     5  
     6  /*函数求二维数组所有的数的和的大小*/
     7  int Sum(int *p,int i,int j){
     8      int m;
     9      int n;
    10      int s;
    11      for(n=0;n<=i;n++){
    12          for(m=0;m<=j;m++){
    13              s=*(p+(n*3)+m);
    14          }
    15      }
    16      return s;
    17  }
    18  int main(){
    19      int s;
    20      int a[3][3];
    21      int i,j;
    22      int k = 0;
    23  
    24   /*指针p用来表示二维数组*/
    25      int *p = &a[0][0];
    26      p = a;
    27  
    28      /*给二维数组的每一位赋予一个整数值*/
    29      for(i=0;i<=2;i++){
    30          for(j=0;j<=2;j++){
    31              *((p+i*3)+j) = k++;
    32          }
    33      }   
    34      /*求出并打印所有数的和*/
    35      s = Sum(p,3,3);
    36      printf("%d",s);
    37      return 0;
    38  }
  • 相关阅读:
    J2EE学习笔记:Filter
    J2EE学习笔记:HTTP协议
    J2EE学习笔记:JSP
    Hibernate 笔记(二) 数据关系
    top命令总结
    让gdb能打印C++中的容器类型
    ps命令注意事项
    自己动手写一个自动登录脚本gg
    request 中url拼接排序参数与签名算法
    python3.7 AES.MODE_ECB(128位) pkcs5padding 加密算法
  • 原文地址:https://www.cnblogs.com/telnetning/p/2956278.html
Copyright © 2011-2022 走看看