zoukankan      html  css  js  c++  java
  • 二维数组作为参数传递问题

    int a[2][2]={{2,6},{9,11}};

    我定义了这样一个数组,我想把这个数组作为参数传递到函数中,并要在函数中能引用该二维数组的元素,怎办呢?

    第一种方式就是直接传递二维数组,但是必须注明第二维的值。因为只传递a[][]编译器无法分配这样的数组,所以要

    传a[][2],第二种方式是传递指针数组方式,int(*a)[3],第三种是传递指针方法。

    //二维数组传参问题示例  
    #include<iostream>  
    using namespace std;  
    //方法1:传递数组,注意第二维必须标明  
    void fun1(int arr[][3],int iRows)  
    {  
        for(int i=0;i<iRows;i++)  
        {  
            for(int j=0;j<3;j++)  
            {  
                cout<<arr[i][j]<<" ";  
            }  
            cout<<endl;  
        }  
        cout<<endl;  
    }  
    //方法二:一重指针  
    void fun2(int (*arr)[3],int iRows)  
    {  
          
        for(int i=0;i<iRows;i++)  
        {  
            for(int j=0;j<3;j++)  
            {  
                cout<<arr[i][j]<<" ";  
            }  
            cout<<endl;  
        }  
        cout<<endl;  
    }  
    //方法三:指针传递,不管是几维数组都把他看成是指针,  
    void fun3(int*arr,int iRows,int iCols)  
    {  
        for(int i=0;i<iRows;i++)  
        {  
            for(int j=0;j<3;j++)  
            {  
                cout<<*(arr+i*iRows+j)<<" ";  
            }  
            cout<<endl;  
        }  
        cout<<endl;  
    }  
    int main()  
    {  
        int a[2][3]={{1,2,3},{4,5,6}};  
        fun1(a,2);  
        cout<<endl;  
        fun2(a,2);  
        cout<<endl;  
        //此处必须进行强制类型转换,因为a是二维数组,而需要传入的是指针  
        //所以必须强制转换成指针,如果a是一维数组则不必进行强制类型转换  
        //为什么一维数组不用强制转换而二维数组必须转换,此问题还没解决,期待大牛!  
        fun3((int*)a,2,3);  
        cout<<endl;  
    }  
      
    /* 
    #include<iostream> 
    using namespace std; 
    void fun(int *a,int length) 
    { 
        int i; 
        for(i=0;i<length;i++) 
        { 
            cout<<a[i]<<" "; 
        } 
        cout<<endl; 
    } 
    int main() 
    { 
        int a[4]={1,2,3,4}; 
        fun(a,4); 
        cout<<endl; 
        return 0; 
    } 
    */  
    

      

  • 相关阅读:
    Asp.Net 合并图片(二维码和其他图片合并)
    Asp.Net 隐藏手机号中间四位为*方法
    Linux后台运行进程 node screen
    nginx 实现负载均衡
    Python 字典递归合并
    搭建Elasticsearch环境,logstash环境
    搭建Elasticsearch环境,搭建kibana 环境
    flask mysql sqlalchemy教程
    MySQL数据库+命令大全+常用操作
    Python开发单元测试,必不可少
  • 原文地址:https://www.cnblogs.com/mahaitao/p/5572095.html
Copyright © 2011-2022 走看看