二维数组作为参数,传入函数(最好用的)

2023-11-04

二维数组作为参数,传入函数(最好用的)

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

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

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

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

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

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

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

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

#include<iostream>
using namespace std;
int fun(int **a,int n)  //在这里面操作二维数组也是正常的使用 a[i][j],不用通过 *(*(a+i)+j) 这样子的繁琐的指针地址和操作
for(int i=0;i<n;i++)
{
  for(int j=0;j<n;j++)
 {
 cout<<a[i][j]<<" ";
      }
  cout<<endl;
     }
 }
 
 int main()
 {
     int n;
     cin>>n; 
     int *a[n];  
     for(int i=0;i<n;i++)   //给每行的数组分配一下空间 
     {    
         a[i]=new int [n];    
     }
     
     //下面初始化一下数组 
     int count=0;    
     for(int i=0;i<n;i++)
     {
         for(int j=0;j<n;j++)
         {
             a[i][j]=count;
             count++;
         }        
     }
  fun(a,n);//调用二维数组就可以直接用二维数组的起始地址 a 传入就可以了 
     
     return 0;
}
//上面如果不太懂的话可以对照一下下面的一维数组的指针传递,类似。
#include<iostream>
using namespace std;
int fun1(int *a,int n)
{
    for(int i=0;i<n;i++)
    {
        cout<<a[i]<<" ";
    }
}
int main()
{
    int n;
    cin>>n;
    int *b;
    b=new int [n];
    //初始化
    for(int i=0;i<n;i++)
    {
        b[i]=i;
    }
    fun1(b,n);
    return 0;
}

不过要记得清楚动态内存。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

二维数组作为参数,传入函数(最好用的) 的相关文章

随机推荐

  • python爬取微信好友信息

    1 准备工作 平台 windows python版本 Python3 6 IDE Pycharm5 0 2 所使用的第三方库 wxpy 想要获取微信好友的信息 只能在登录成功后才能获得 常见应用场景 控制路由 只能家具等具有开放接口的物品
  • Finding a needle in Haystack:Facebook's photo storage的理解

    博客的所有内容都是个人理解 难免有理解错误的地方 欢迎大家多多拍砖 这是facebook发在OSDI上的一篇论文 讲述了facebook用于存储用户图片的系统Haystack 目前facebook存储了260billion图片 而图片文件显
  • pod状态

    Pending 该Pod已被Kubernetes系统接受 但是尚未创建一个或多个Container映像 这包括计划之前的时间以及通过网络下载图像所花费的时间 这可能需要一段时间 Running Pod已绑定到节点 并且所有容器都已创建 至少
  • 不习惯的 Vue3 起步三 の computed 和 watch

    计算属性和侦听器 Computed计算属性 在模板内表达式非常简单 如果在模板内放入过多的逻辑会使得模板过重并且难以维护 示例
  • deepsort代码改进

    DeepSORT是一个非常流行的多目标跟踪算法 但是可以通过对其代码进行改进来提高其性能和适应性 以下是一些DeepSORT代码改进的建议 使用更好的特征提取器 DeepSORT使用卷积神经网络 CNN 来提取特征 但是可以尝试使用更好的C
  • js绑定键盘快捷键实战

    下面这个函数用来响应键盘事件 标签相应onkeydown事件后调用这个函数就可以实现按键的转换功能 设置快捷键绑定function setShortcutBinding var a window event keyCode if a 8 退
  • 观点

    点击上方 小白学视觉 选择加 星标 或 置顶 重磅干货 第一时间送达 本文作者认为 深度学习只是一种计算机视觉工具 而不是包治百病的良药 不要因为流行就一味地使用它 传统的计算机视觉技术仍然可以大显身手 了解它们可以为你省去很多的时间和烦恼
  • C++构造函数是否可以定义为private

    思考下 什么时候构造函数需要定义为private 1 如果一个类的构造函数只有一个且为private 这是可以编译通过的 class Parent private Parent cout lt lt parent private lt
  • 多智能体强化学习入门(六)——MFMARL算法(Mean Field Multi-Agent RL)

    本节内容见https zhuanlan zhihu com p 56049023
  • lua 定时器以及应用

    function update timer fun for k v in pairs update timer m process time fun do v k update timer m porcess run time k end
  • qt操作excel表

    https blog csdn net cannon qi article details 79972258
  • day-37 代码随想录算法训练营(19)贪心part06

    738 单调递增的数字 思路 在给的数字中找到第一个开始递减的两个数字 将前一个数字减1 后面的数字全部变为最大值9 968 监控二叉树 思路 分三种状态 0无覆盖 1有监控 2有覆盖 分四种情况 1 两边都有覆盖 返回0 2 两边有一边无
  • 在关系数据库中。存放在数据库中的逻辑结构以什么为主 (4选一)

    C 哈希表
  • 笔试题2:如何用八进制和十六进制来表示整型数据

    八进制的含义在于每位数字的进位大小为8 也就是0 8的9个数字 十六进制的进位大小为16 除了0 9的10个数字 还包括a b c d e f来表示10 11 12 13 14 15 答案 Java的八进制采用0开头 十六进制采用0x开头
  • iOS宏定义的黑魔法 - 宏菜鸟起飞手册

    转自 OneV s Den的博客 宏定义在C系开发中可以说占有举足轻重的作用 底层框架自不必说 为了编译优化和方便 以及跨平台能力 宏被大量使用 可以说底层开发离开define将寸步难行 而在更高层级进行开发时 我们会将更多的重心放在业务逻
  • 计算机虚拟化+网络

    计算机虚拟化 网络 cookie 什么是 Cookie cookie的生命周期 cookie Cookie 用于存储 web 页面的用户信息 什么是 Cookie Cookie 是一些数据 存储于你电脑上的文本文件中 当 web 服务器向浏
  • C++像素游戏

    我的作品 鼠标板 黑科技之橡素 代码 include
  • Verilog语言实现FPGA上的计数器

    Verilog语言实现FPGA上的计数器 计数器是数字电路中经常使用的基本元素之一 它用于生成指定脉冲数量或者指定计数范围内的计数信号 在现代数字电路设计中 FPGA Field Programmable Gate Array 作为一种可编
  • QT+Opencv 时报错Failed to load module “canberra-gtk-module“

    解决方案 sudo apt get install libcanberra gtk module
  • 二维数组作为参数,传入函数(最好用的)

    二维数组作为参数 传入函数 最好用的 很多时候我都是直接通过传入一个 固定的数字来传递一个二维数组 比如这样子定义函数 int fun int a 3 int n 调用函数是 fun a n 这样子调用的二维数组只能是固定已经知道的 不够灵