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#二维数组传递与拷贝

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

  3. Android jni 二维数组 传递

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

  4. 二维数组的传输 (host <-> device)

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

  5. [zt]C++二维数组讲解、二维数组的声明和初始化

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

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

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

  7. 第六篇:二维数组的传输 (host <-> device)

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

  8. C/C++怎样传递二维数组,转载自CSDN

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

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

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

随机推荐

  1. noip 借教室 线段树95分做法

    大致的思路是用线段树维护每个区间内部的最小值 段更新最小值 每次查某个区间的最小值是否满足租借要求 满足就借出去 update最小值 注意pushdown操作  还有一个从子区间提取答案的操作 提交地 ...

  2. SQL: ROW_NUMBER

  3. [hihoCoder1329] 带Split和Merge的Treap

    题目链接:http://hihocoder.com/problemset/problem/1329 这题本来是学Splay的题,但是我为了练习Treap的Split和Merge操作,就借来用一用. 就 ...

  4. The novaclient Python API

    The novaclient Python API Usage First create a client instance with your credentials: >>> f ...

  5. C# 6.0 特性

    C#6.0主要提供了一些语法糖,另外还提供了新的编译器Roslyn地址https://github.com/dotnet/roslyn 一下列举几个新增的语法糖: 1.构造一个类: public cl ...

  6. cvs update后输出的文件标志 和 update常用的几个参数

    (1)update 和 checkout 在执行中,会为每个文件打印一行提示信息,文件的状态通过前面的单个字符指明:       U file        文件按要求从仓库得到更新.用在那些仓库里面 ...

  7. ZAM 3D 制作简单的3D字幕 流程(二)

    原地址:http://www.cnblogs.com/yk250/p/5663907.html 文中表述仅为本人理解,若有偏差和错误请指正! 接着 ZAM 3D 制作简单的3D字幕 流程(一) .本篇 ...

  8. java BigDecimal add 等方法遇到的问题

    //这篇随笔是为了提醒自己避免重复错误 //原先的代码是这样的,想着输出会是9.00,可是结果却是0.00 BigDecimal day_fee = new BigDecimal("0.00 ...

  9. flex-布局,轻松制作移动端网页

    Flex 布局教程 网页布局(layout)是CSS的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊布局非常不 ...

  10. Spring整合log4j

    log4j2.xml放在类加载路径下,类加载路径就是WEB-INF文件夹下的classses文件,因为运行时,src包里的java类会被编译成.class盘文件,放在WEB-INF文件夹下的class ...