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 }
  • 相关阅读:
    拖拽更改窗口大小
    一个窗口移动时,另一个窗口跟随移动
    xcode使用技巧
    同一个解决方案中,多个项目间相互引用,无法打开源文件
    截图时窗口自动识别
    C++使用sqlite时,中文字符显示乱码问题
    sqlite3配置与使用
    duilib控件与属性说明
    xml文件编写
    线程及安全相关
  • 原文地址:https://www.cnblogs.com/chenhanwu/p/9897461.html
Copyright © 2011-2022 走看看