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. [转]AJAX工作原理及其优缺点

    1.什么是AJAX?AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是一种创建交互式网页应用的网页开发技术.它使用:使用XHTML ...

  2. ROS Learning-026 (提高篇-004 A Mobile Base-02) 控制移动平台 --- “分封制”

    ROS 提高篇 之 A Mobile Base-02 - 控制移动平台 - "分封制" 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ub ...

  3. 数字图像处理实验(3):PROJECT 02-03, Zooming and Shrinking Images by Pixel Replication 标签: 图像处理matlab 20

    实验要求: Zooming and Shrinking Images by Pixel Replication Objective To manipulate a technique of zoomi ...

  4. Luogu 3704 [SDOI2017]数字表格

    列一下式子: $\prod_{i = 1}^{n}\prod_{j = 1}^{m}fib_{gcd(i, j)}$ 很套路的变成这样: $\prod_{d = 1}^{min(n, m)}fib_{ ...

  5. Luogu 3822 [NOI2017]整数

    看懂了的大佬的题解.(这个id太巨了,找不到他的blog) 考虑直接暴力算进位均摊复杂度是对的,证明戳这里. 但是题目要求我们支持一个减操作,这就相当于返回之前操作前的结果,这对于这种均摊的复杂度的东 ...

  6. Python程序设计8——网络编程

    Python是一个很强大的网络编程工具,python内有很多针对场景网络协议的库,在库顶部可以获得抽象层,这样就可以集中精力在程序的逻辑处理上,而不是停留在网络实现的细节中. 1 少数几个网络设计模块 ...

  7. 短信部分之PDU简介及其格式(转)

      PDU是大多数手机短信通讯的核心,仅有少数手机只支持Text模式(例如笔者的MOTO C330).PDU模式比起Text模式可以提供能为强大的功能,但其编码较Text模式困难.无论哪种模式,我们都 ...

  8. Java之命令模式(Command Pattern)

    转自:http://www.cnblogs.com/devinzhang/archive/2012/01/06/2315235.html 1.概念 将来自客户端的请求传入一个对象,从而使你可用不同的请 ...

  9. KindEditor 销毁与自动高度冲突解决

    前提准备情况: KindEditor(KE)  +  easyUI 1.通过 EasyUI.Window 打开一个窗口,窗口中包含一个 KE编辑器:在次打开WIndow 的时候 KE会出现编辑器里面的 ...

  10. 静态-static

    静态 1. 静态初始化块 (1)可初始化类的静态字段 (2)静态初始化块只调用一次 (3)创建子类时会调用父类的静态初始化块 源代码: class Root { static{ System.out. ...