c-二维动态数组的创建过程

问题描述

二维动态数组的创建过程
int m,n;
cin>>m>>n;
int **p   = NULL;
p = new int *[m];
for(int i=0;i<m;i++)
p[i] = new int[n];

可以解释下后四句的具体过程吗?

解决方案

int p = NULL;//p是变量名,int是类型,即定义一个二维指针p,p指向空
p = new int *[m];//给p赋值,p指向一个指针数组,这个数组有m个成员
for(int i=0;i<m;i++)//循环m次
p[i] = new int[n];//给p指向的每一个指针数组的成员赋值,让他们各指向一个有n个成员的数组

解决方案二:

 int m,n; //表示数组长度
cin>>m>>n; //输入
int **p   = NULL;
p = new int *[m]; //用new创建数组的数组
for(int i=0;i<m;i++)
p[i] = new int[n]; //创建每一个数组

其实**p是数组的数组,这样比较好理解。数组的每个元素是一个整数数组

解决方案三:

方法1.用new / delete创建二维动态数组
代码:

#include<iostream>
#include<vector>
using namespace std;

#define ROW 2 //行数
#define COLUMN 3 //列数
#define VALUE 1 //数组元素值

//使用new/delete创建二维数组
int ......
答案就在这里:C++中二维动态数组的创建

时间: 2024-10-30 14:08:42

c-二维动态数组的创建过程的相关文章

visual studio-vs2013调试中,如何通过指针监视二维动态数组的值?

问题描述 vs2013调试中,如何通过指针监视二维动态数组的值? int **p = new int *[row]; for (i = 0; i < row; i++) p[i] = new int[column]; 比如说我用上面语句创建额一个row行column列的数组,调试的时候怎样在监视窗口中,看到整个二维数组的值呢? 如果是一维的,例如int *p=new int[5]: 可以将p,5写到监视名称里,可二维的我就不知道了...求帮助 解决方案 调试状态下,调试->窗口->内存,

C++技巧之二维动态数组类模板

C++提供了许多强大的机制来实现代码的高度复用.来使我们使用我们自已的类就像使用内置类型那样方便快捷.比如模板,运算符重载等等.模板好比如是一个大批量生产函数和类的工厂,使我们不用再去关心与数据类型相关的繁琐编程细节,把我们精力留给那些真正值得我们去认真思考的地方.而运算符重载则使我们的程序更直观更简洁,这不仅使我们更容易读懂我们的程序,而且使我们能以一种更为流畅的方式来表达我们的想法.就像上篇文章说到的,如果我们把动态分配的二维数组用类模板实现,并重载相应的操作符,我们就能十分方便的使用我们自

c++ 大家帮忙看看这个二维动态数组的声明和引用有什么问题吗

问题描述 c++ 大家帮忙看看这个二维动态数组的声明和引用有什么问题吗 Image::Image(unsigned char **m, int h, int w) { m=new unsigned char *[h]; for (int x=0;x<h;x++) { m[x]=new unsigned char[w]; } } void Image::Read(char* ImageName) { IplImage* img = cvLoadImage(ImageName, CV_LOAD_IM

visual studio-VS 调试时怎么看二维动态数组

问题描述 VS 调试时怎么看二维动态数组 就是VS调试的时候,怎么看二维动态数组的各个元素呀 例如**p,然后内存申请好了, 然后监视窗口里打p,10,展开,只能看到每一行的第一个元素,怎么看所有元素呀 解决方案 每个元素点开,再下一层中查看.最好是关闭编译器的优化,重新编译后调试

学习二维动态数组指针做矩阵运算的方法_C 语言

本文分享了利用二维动态数组指针做矩阵运算的实现代码. 1. 头文件     // juzhen 2.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "stdlib.h" #include "windows.h" #define OK 0 #define NG -1 typedef struct mat { int

实现真正意义上的二维动态数组模板

我们可以通过动态数组的反例来确定动态数组应该具有哪些特性.大家都知道以下的方式是定义一个静态数组. int iCount[10]; int iCount[10][10]; 从上面可以看出,定义了静态数组之后,无论程序如果使这个数组,该数组在内存中所占空间的大小,位置是确定不变的. 我们可以得出结论,对于编译器,静态数组的大小和空间是已知的,因此编译器可以自动为该数组分配空间.具体情况是:如果你定义了一个全局数组,编译器将在数据区为你的数组分配一个空间:如果是个局部数组(比如定义在某一个局数中),

二维动态数组-c++简单的一道题,数组

问题描述 c++简单的一道题,数组 19.已知int?a[3][3]?=?{1,2,3,4,5,6,7,8,9},则不能表示数组元素a[2][1]的地址是(??B?)???? ?A?&a[2[1]????????????????????? B??*?(a[2]?+?1)????? C?a[2]?+?1????????????????????? D??*?(a?+?2)?+?1? A答案是什么意思呢,麻烦帮我解释一下各个答案 解决方案 a相当于一个指针.因此c d都是对的.a也是对的.只有b,它的

vc++-二维字符串SAFEARRAY的创建和读取

问题描述 二维字符串SAFEARRAY的创建和读取 各大神好,下面是我创建的字符串二维数组: SAFEARRAYBOUND Bound[2]; Bound[0].lLbound=0; Bound[0].cElements=2; Bound[1].lLbound=0; Bound[1].cElements=3; SAFEARRAY* pArray=SafeArrayCreate(VT_BSTR,2,Bound); CString strInfos[3][3]; strInfos[0][0] = "

源代码-【二维字符数组】从键盘输入若干英文单词,单词最大长度不超过 15 个字母,把单词按照长度从大到小排序

问题描述 [二维字符数组]从键盘输入若干英文单词,单词最大长度不超过 15 个字母,把单词按照长度从大到小排序 用C语言来写,还没有学到指针,所以不要指针的写法,求大神给个源代码,我自己已经想了3个小时了还没有写出来. 解决方案 不用指针的话,没有办法动态分配内存,我们只能做一个假设,那就是键盘输入的单词不超过n(比如n=100,可以视作无限大) 至于排序,可以用冒泡都可以. 解决方案二: #include<string.h> #include<stdio.h> void main