zoukankan      html  css  js  c++  java
  • 向函数传递一个二维数组(指针传递)

    二维数组的指针传递法

    很多时候我都是直接通过传入一个  固定的数字来传递一个二维数组,

    比如这样子定义函数 int fun(int a[][3],int n) 

    调用函数是  fun(a,n); 

    这样子调用的二维数组只能是固定已经知道的,不够灵活性。

    以下介绍一下通过指针直接随意设定的二维数组;

    定义函数是   int fun(int **a,int n) 

    调用函数也是直接  fun(a,n); 

    不过有一点就是在定义数组的时候得分配一下空间以及定义的方式有些许不同,详细见下。

     1 #include<iostream>
     2 using namespace std;
     3 int fun(int **a,int n)  //在这里面操作二维数组也是正常的使用 a[i][j],不用通过 *(*(a+i)+j) 这样子的繁琐的指针地址和操作
     5     for(int i=0;i<n;i++)
     6     {
     7         for(int j=0;j<n;j++)
     8         {
     9             cout<<a[i][j]<<" ";
    10         }
    11         cout<<endl;
    12     }
    13 }
    14 
    15 int main()
    16 {
    17     int n;
    18     cin>>n; 
    19     int *a[n];  
    20     for(int i=0;i<n;i++)   //给每行的数组分配一下空间 
    21     {    
    22         a[i]=new int [n];    
    23     }
    24     
    25     //下面初始化一下数组 
    26     int count=0;    
    27     for(int i=0;i<n;i++)
    28     {
    29         for(int j=0;j<n;j++)
    30         {
    31             a[i][j]=count;
    32             count++;
    33         }        
    34     }
    35     fun(a,n);//调用二维数组就可以直接用二维数组的起始地址 a 传入就可以了 
    36     
    37     return 0;
    38 }

      

     1 //上面如果不太懂的话可以对照一下下面的一维数组的指针传递,类似。 
     2 #include<iostream>
     3 using namespace std;
     4 int fun1(int *a,int n)
     5 {
     6     for(int i=0;i<n;i++)
     7     {
     8         cout<<a[i]<<" ";
     9     }
    10 }
    11 int main()
    12 {
    13     int n;
    14     cin>>n;
    15     int *b;
    16     b=new int [n]; 
    17     //初始化 
    18     for(int i=0;i<n;i++)
    19     {
    20         b[i]=i;
    21     }
    22     fun1(b,n);  
    23     return 0;
    24 }
  • 相关阅读:
    【华为云技术分享】区块链与数据库如何结合?
    【华为云技术分享】跟繁琐的命令行说拜拜!Gerapy分布式爬虫管理框架来袭!
    gin casbin xorm vue-admin权限认证。
    golang优秀库及介绍
    网上的element-ui-admin运行
    golang时区处理
    Let's Encrypt apache的配置
    wireshark分析自己向自己请求服务
    XORM的几个常用数据处理
    golang处理json
  • 原文地址:https://www.cnblogs.com/chenhanwu/p/9897461.html
Copyright © 2011-2022 走看看