c++ 二维数组传递

时间:2021-10-12 13:11:23

c++ 二维数组传递

  我们在传递二维数组时,对于新手来说,可能会存在某些问题,下面讲解几种传递方法

  在讲解如何传递二维数组时,先看看如何动态new 二维数组

 // 二维数组动态申请
int row ,col ;
cin >> row >> col; int** arr;
// c++ 形式
arr = new int*[row];
for(int i = ;i<row;i++)
arr[i] = new int[col]; // c 形式
arr = (int**)malloc(sizeof(int *) * row);
for(int i = ;i<row;i++)
arr[i] = (int*)malloc(sizeof(int) * col);

  此方法就是定义一个二级指针,二级指针指向一个数组,该数组元素为整形指针。再分别对这整形指针new一个数组,这样二维数组就动态new出来了。

  在此讲解一下如何查看某个变量的类型,在c++中,通过包含#include<typeinfo> 头文件,就很容易打印出变量类型,如下语句:

  cout << typeid(variable_name) << endl;

  

  下面讲解一下如何传递,如果二维数组变量是指针形式,则直接定义如下函数形参就好

  void function_name(int** arr,int row,int col);

  如果二维数组变量是数组,则可以通过强制转换成 int**形式进行传递,比如main函数中,有如下代码:

  

int main(int argc, const char * argv[])
{
int a[][];
function_name((int**)a,,);
}

  这种强制转换的方式也是可以借鉴的。

  还有另一种传递方式就是定义模板,如下所示:

template<typename T>
void test1(T& b)
{
cout << typeid(b).name() << endl;
}
int main(int argc, const char * argv[])
{
int a[][];
cout << typeid(a).name()<<endl;
test1(a);
}

  上面程序两句打印结果一样,表明模板的类型推导把b推导成二维数组类型。

c++ 二维数组传递的更多相关文章

  1. c语言二维数组传递

    c语言二维数组传递,目前我总结三种方法,以及纠正一个不能使用的方法 /********************************* * 方法1: 第一维的长度可以不指定 * * 但必须指定第二维 ...

  2. c&num;二维数组传递与拷贝

    定义 string[,] arr = new string[12, 31] 另一种string[][] ary = new string[5][];相当于一维数组 常量二维数组定义, 用readonl ...

  3. Android jni 二维数组 传递

    学习Android Jni时,一个二维 整数 数组的传递花了我好长时间,在网上查的资料都不全,当然最后是成功了,写在这里是为了自己记住,当然有人搜索到并利用了我会很高兴.   in Android J ...

  4. 二维数组的传输 &lpar;host &lt&semi;-&gt&semi; device&rpar;

    前言 本文的目的很明确:介绍如何将二维数组传递进显存,以及如何将二维数组从显存传递回主机端. 实现步骤 1. 在显存中为二维数组开辟空间 2. 获取该二维数组在显存中的 pitch 值 (cudaMa ...

  5. &lbrack;zt&rsqb;C&plus;&plus;二维数组讲解、二维数组的声明和初始化

    定义: int *pia = new int[10]; // array of 10 uninitialized ints 此 new 表达式分配了一个含有 10 个 int 型元素的数组,并返回指向 ...

  6. 论C语言中二级指针和二维数组之间的区别

    刚开始学习C语言的时候,觉得一个数组可以定义一个一级指针去访问,想当然的就觉得可以定义一个二级指针去访问二维数组.很显然这是错误的. 我们来看看C语言的数组在内存中的存储方式. 实际上C语言中的数组, ...

  7. 第六篇:二维数组的传输 &lpar;host &lt&semi;-&gt&semi; device&rpar;

    前言 本文的目的很明确:介绍如何将二维数组传递进显存,以及如何将二维数组从显存传递回主机端. 实现步骤 1. 在显存中为二维数组开辟空间 2. 获取该二维数组在显存中的 pitch 值 (cudaMa ...

  8. C&sol;C&plus;&plus;怎样传递二维数组,转载自CSDN

    用二维数组作为参数传递(用二维数组处理矩阵),但是希望接受传递二维数组参数的函数可以处理任意维度的数组(希望矩阵的行数和列数都是不固定的). [以下转帖] ---------------------- ...

  9. 如何在C中传递二维数组作为参数?

    回答: 在C语言中,有很多方法可以将2d数组作为参数传递.在下面的部分中,我描述了将2d数组作为参数传递给函数的几种方法. 使用指针传递2d数组以在c中运行 多维数组的第一个元素是另一个数组,所以在这 ...

随机推荐

  1. UEditor编辑器的使用

    1.首先我们要去官网下载UEditor编辑器,选择语言,这里我用的是php utf-8版本(李昌辉) 2.下载完成之后解压文件,将解压的文件放到我们的网站目录里面 3.ueditor/utf8-php ...

  2. SDL 显示解码后的yuv12数据

    在上篇h264解码为yuv12后http://jhlong12345.blog.163.com/blog/static/1230631292015725115058709/ ,需要显示出来,使用sdl ...

  3. 从世界坐标转换成ui的rect坐标的方法

    这个东西整整折磨了我一个通宵.原谅我先这样放上来.明天整理整理 using UnityEngine; using System.Collections; using UnityEngine.UI; p ...

  4. js-正则表达式的替换

    正则表达式替换使用的是replace()方法.Replace()方法是用一些字符途欢另一些字符 语法:stringObject.replace(regexp,replacement) regexp 必 ...

  5. apache 泛域名配置

    需求:  在apache上配置两个项目,分别是项目a和项目b,a.baiye5.com访问项目a,其余的除了a前缀名之外的例如b2b.baiye5.com .*.baiye5.com等都访问项目b. ...

  6. &lbrack;转&rsqb;Android WebView播放视频(包括全屏播放),androidwebview

    Android WebView播放视频(包括全屏播放),androidwebview 最近项目开发中用到了WebView播放视频的功能,总结了开发中犯过的错误,这些错误在开发是及容易遇到的,所以我这里 ...

  7. 启动Activity但不显示其界面

    最近在工作中做了一个很简单的任务,制作一个apk,点击该app链接到某一个网站.     代码很简单,只有如寥寥几行: (browser.java) package com.test.browser; ...

  8. 如何使用JAVA语言抓取某个网页中的邮箱地址

    现实生活中咱们常常在浏览网页时看到自己需要的信息,但由于信息过于庞大而又不能逐个保存下来. 接下来,咱们就以获取邮箱地址为例,使用java语言抓取网页中的邮箱地址 实现思路如下: 1.使用Java.n ...

  9. &dollar;&lowbar;SERVER&lbrack;&&num;39&semi;URI&&num;39&semi;&rsqb;

    WordPress通过301重定向实现非首先域(非www)跳转向本来是一个很简单事情,由于没弄清楚$_SERVER['HTTP_X_REWRITE_URL'] 和$_SERVER['REQUEST_U ...

  10. Python generator 的yield &lpar;enumerate&rpar;

    生成杨辉三角 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 def triangles(max): L = [1,] while len(L) - 1 &lt ...