int **a  =  new int* [m]   //分配一个指针数组,将其首地址保存在a中   、

for(int i = 0; i < m; i++)   //为指针数组的每个元素分配一个数组

a[i] = new int [n];

相当于产生了一个二维数组 a[m][n]了

静态声明的数组可以有公式(假设也是m行n列)

b[i][j] = b[i*n +j]

这是因为数组b是连续的一片内存,而动态声明的数组任意的a[k]都是一个int*类型,即一个地址,所以只能a[i][j]或者*(*(a+i) + j)来访问数组的元素,而不能a[i*n + j]使用。

动态声明的数组,使用后需要释放内存。

for(int i = 0; i < m; ++i)

delete []a[i];

delete []a;

 #include <iostream>
#include <stdlib.h> using namespace std; int main()
{
int row,column;
cin >> row >> column;
//申请空间
int **a = new int* [row];
for(int i = ; i < row; i++)
a[i] = new int[column]; //使用空间
for(int j = ; j < row; j++)
for(int k = ; k < column; k++)
a[j][k] = rand() % ; for(int j = ; j < row; j++)
{
cout << endl;
for(int k = ; k < column; k++)
cout << a[j][k] << " ";
}
//释放空间
for(int i = ; i < row; i++)
delete []a[i];
a = NULL; return ;
}
  //方法二,利用vector创建二维数组
#include <iostream>
#include <stdlib.h> using namespace std; {
int row,column;
cin>>row>>column;
//申请空间
vector<vector<int> > a(row,vector<int>(column)); //使用空间
for(int j = ;j < row;j++)
for(int k = ;k< column;k++)
a[j][k] = rand()%; for(int j = ;j < row;j++)
{
cout<<endl;
for(int k = ;k< column;k++)
{
a[j][k] = rand()%;
cout<<a[j][k]<<" ";
}
}
return ;
}

C++二维数组的动态声明的更多相关文章

  1. JAVASE(八) 数组: 一维数组、二维数组、动态数组、静态数组

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 1.一维数组 1.1 数组的声明和初始化声明方式: String str[]; //不建议使用 Stri ...

  2. C语言数组:C语言数组定义、二维数组、动态数组、字符串数组

    1.C语言数组的概念 在<更加优美的C语言输出>一节中我们举了一个例子,是输出一个 4×4 的整数矩阵,代码如下: #include <stdio.h> #include &l ...

  3. C语言学习笔记 (005) - 二维数组作为函数参数传递剖析

    前言 很多文章不外乎告诉你下面这几种标准的形式,你如果按照它们来用,准没错: //对于一个2行13列int元素的二维数组 //函数f的形参形式 f(int daytab[2][13]) {...} / ...

  4. c++ 二维数组传递

    c++ 二维数组传递 我们在传递二维数组时,对于新手来说,可能会存在某些问题,下面讲解几种传递方法 在讲解如何传递二维数组时,先看看如何动态new 二维数组 // 二维数组动态申请 int row , ...

  5. 【C语言入门教程】4.2 二维数组

    C 语言允许使用多维数组,即使用多组小标的数组,二维数组是最常用的多维数组.多维数组在内存中存放数据的顺序与一维数组相同,使用连续的存储单元. 4.2.1 二维数组的一般形式 二维数组的一般声明形式为 ...

  6. 《Java大学教程》—第16章 二维数组

    多维(Multi-dimensional)数组维数由索引个数决定.常用的数组:一维(one-dimensional)数组.二维(two-dimensional)数组 16.2    创建二维数组索引从 ...

  7. js一维数组转换为二维数组

    function arrTrans(num, arr) { // 一维数组转换为二维数组 const iconsArr = []; // 声明数组 arr.forEach((item, index) ...

  8. Java连载68-数组的拷贝、二维数组

    一.数组的拷贝 函数arraycopy(),参数为:源数组.源数组的开始下标.目标数组.目标数组的开始下标.拷贝长度 package com.bjpowernode.java_learning; ​ ...

  9. C# 二维数组 [,]与[][] 的区别 及特性

    arr[,] 用于声明等长的二维数组 Eg: //声明数组有3行 每行长度相等为2 var s = new int[3, 2] { { 1, 2 }, { 3, 4 }, { 1, 4 } }; 获取 ...

随机推荐

  1. C++面向对象类的实例题目十

    题目描述: 编写一个程序,其中有一个汽车类vehicle,它具有一个需要传递参数的构造函数,类中的数据成员:车轮个数wheels和车重weight放在保护段中:小车类car是它的私有派生类,其中包含载 ...

  2. c语言学习笔记 const变量

    在c语言的编程过程中经常会遇到有常数参加运算的运算,比如这种. int a=100*b; 这个100我们叫常数或者叫常量,但是程序中我们不推荐这种直接写常数的方法,有两个缺点. 第一是程序可读性差. ...

  3. cakephp的优点

    1.接口传参非常简单,直接域名/控制器名/方法名/param1/param2

  4. Struts2 引入

    引入:   说:如果一个路径想访问一个类,需求怎么做? 第一种方法,用servlet 第二种方法,用过滤器 第三种方法如下图:把路径和方法都存到map里面,用反射可以执行类下的方法     第三中方法 ...

  5. 关于C#中的算术运算

    使用中间变量交换两个int型变量的值: ; ; a = a+b; b = a-b; a = a-b; 相信大家很容易写出来,但考虑到边界值情况时会有一些有趣的事情. 我们知道有一个int.MaxVal ...

  6. Repeater控件的分隔线

    在Repeater控件中,很容易实现在行与行之间使用分隔线.因为此控件有内置的SeparatorTemplate模版.举个例子吧: 运行时,可以看到效果: 说句实在的话,Insus.NET做一条水平线 ...

  7. 转载JAVA八大经典书籍,你看过几本?

    一.Java从入门到精通*<Java从入门到精通(第3版)>从初学者角度出发,通过通俗易懂的语言.丰富多彩的实例,详细介绍了使用Java语言进行程序开发需要掌握的知识.<Java从入 ...

  8. Elaxia的路线

    Elaxia的路线 求无向图中,两对点间最短路的最长公共路径. 四遍spfa标出每条边的标记,然后用拓扑排序跑dp即可. exp:拓扑排序可以跑DAG上的dp. #include <cstdio ...

  9. Angular2入门-架构总览

    ▓▓▓▓▓▓ 大致介绍 在3月23日,Angular4正式发布(没有3).似乎现在学Angular2又晚了,又晚一步-_-||.Angular2在Angular1的基础上有了较大的改变.之前向一个同学 ...

  10. arcgis打印服务

    <script>    function print1() {        require([               "esri/map",           ...