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. CentOS7 修改主机名(转)

    转载出处:http://www.centoscn.com/CentOS/config/2014/1031/4039.html CentOS7 时间同步:http://www.cnblogs.com/r ...

  2. CentOS 网卡配置bond4(LACP)

    交换机开启LACP,配置聚合. 网卡eno1, eno2, eno3.eno1为管理口,eno2和eno3绑定,配置bond4. 配置eno2: vim /etc/sysconfig/network- ...

  3. centos 安装rmagick 2.13.4出错

    因为安装redmine,缺少rmagick,使用bundle install安装依赖的gem,报错如下: 然后,网上查询一下,都是ubuntu系统下的解决方案. centos下正确的解决方法如下: y ...

  4. lsyncd 实时同步

    1. 几大实时同步工具比较 1.1 inotify + rsync 最近一直在寻求生产服务服务器上的同步替代方案,原先使用的是inotify + rsync,但随着文件数量的增大到100W+,目录下的 ...

  5. HTML5服务器推送消息的各种解决办法

    摘要 在各种BS架构的应用程序中,往往都希望服务端能够主动地向客户端推送各种消息,以达到类似于邮件.消息.待办事项等通知. 往BS架构本身存在的问题就是,服务器一直采用的是一问一答的机制.这就意味着如 ...

  6. C++ 快排

    // 进行一轮快排并返回当前的中间数 int getMiddle( int* arr, int low, int high ) { auto swaparr = [&]( int i, int ...

  7. 【转】日期工具类DateUtils

    转自csdn,原作者:jzhf2012 package date.util; import java.text.ParseException; import java.text.SimpleDateF ...

  8. VMware Workstation 11, 客户机Ubuntu14.04.1 LTS 64bit,宿主机Windows 8.1 64bit,剪贴板共享(copy and paste)失效问题

    Ubuntu14.04是从12.04升级上来的,因为GUI性能的原因相继装了Xubunbu和Lubuntu的包(Lubuntu的桌面果然轻量级,但是请神容易送神难,卸载Xubuntu很麻烦,就先放下了 ...

  9. asp.net中插件开发模式说明

    第一定义接口 /// <summary>          /// 这是插件必须实现的接口,也是主程序与插件通信的唯一接口         /// 换句话说,主程序只认识插件里的这些方法  ...

  10. python 面试必读

    总结了10道题的考试侧重点,供参考: 1.How are arguments passed – by reference of by value? 考的是语法,基本功,虽说python程序员可以不用关 ...