一句话动态开辟二维数组

#include<iostream>
using namespace std;

//动态开辟int p[4][5]数组

void main()
{
	//为了验证正确性,我们先把开辟的一维数组赋值给 pp
	int *pp=new int[20];
	int i=0,j=0;
	for(i=0;i<20;i++)//为一维数组中每一个元素赋值,并输出该元素地址
	{
		pp[i]=i;
		cout<<&(pp[i])<<" ";//即 pp+i
	}
	cout<<endl;

	int  (* const p)[5]=(int(*)[5])pp;//转为二维常指针

	//p=(int(*)[5])pp;   p已经是数组首地址,企图修改该常量会报错(const限定为常量) 

	for(i=0;i<4;i++)//依次输出二维数组中每一个元素的值
		for(j=0;j<5;j++)
			cout<<p[i][j]<<" ";

	cout<<endl;

	for(i=0;i<4;i++)//依次输出二维数组中每一个元素的地址,可以看出地址是连续的
		for(j=0;j<5;j++)
			cout<<&(p[i][j])<<" ";

	cout<<endl;

	//上面开辟二维数组可以简化为  	int  (* const p)[5]=(int(*)[5])(new int[20]);

	//优点  : 只使用了20个int型大小的空间,加一个指针,与用int p[4][5]这种方式占用相同大小空间,
	//避免使用指针数组模拟二维数组时地址可能不连续和空间浪费问题
}

一句话动态开辟二维数组,布布扣,bubuko.com

时间: 2024-10-03 13:48:04

一句话动态开辟二维数组的相关文章

转:用STL中的vector动态开辟二维数组

用STL中的vector动态开辟二维数组 源代码:#include <iostream>#include <vector>using namespace std;int main(){ int m, //行数     n; //列数 cout << "input value for m,n:"; cin>>m>>n;  //注意下面这一行:vector<int后两个">"之间要有空格!否则会被认

[ 1001] 动态开辟二维数组的说明

开辟二维数组的说明 图解  [1][][][][] [2][][][][] [3][][][][] void main() { int i,j; /*注意申请的指针格式  先创建的是1,2,3首地址为指向指针的指针a来代表 1,2,3所在地址*/ int **a = (int **) malloc(sizeof(int *) * 3); /* 循环创建了3个 1*4的数组 并将首地址给了 1,2,3的位置上*/ for (j=0;j<3;j++) { a[j] = (int *) malloc(

【C++】动态开辟二维数组

二维数组在内存中的分配例如以下: C方式呈现: <span style="font-size:18px;"> #include <iostream> using namespace std; #define ROW 3 #define COL 4 void main() { int **p = (int **)malloc(sizeof(int*)*ROW); for(int i=0; i<ROW; ++i) { p[i] = (int *)malloc(

【C语言】 动态开辟二维数组

#include <stdio.h> #include <stdlib.h> int main() { //int arr[3][4]; int **arr = (int**)malloc(sizeof(int*) * 3); int i = 0; int j = 0; int k = 1; for(i = 0;i<3;i++) { arr[i] = (int *)malloc(sizeof(int) * 4); //  memset(arr[i],1,(sizeof(int

C++中动态申请二维数组并释放方法

C/C++中动态开辟一维.二维数组是非常常用的,以前没记住,做题时怎么也想不起来,现在好好整理一下. C++中有三种方法来动态申请多维数组 (1)C中的malloc/free (2)C++中的new/delete (3)STL容器中的vector 下面逐一介绍: 第一种:malloc/free 1.动态开辟一维数组 [cpp] view plaincopy //动态开辟一维数组 void dynamicCreate1Array() { int m; int i; int *p; printf("

C语言 动态创建二维数组

/*C语言 如何动态创建二维数组 转化为一维数组申请数组,创建和释放都比较简单 */ #include <stdlib.h> #include <stdio.h> #include <malloc.h> #define RANK 10 #define COLUMN 7 int main() { int i,j; int (*p)[COLUMN]; //动态生成二维数组,指定列数为COLUMN,如果想改,自己该里面 //的参数,如果想定义n行2列就为: p=(int (*

C++动态申请二维数组与拷贝构造函数

一.C++动态申请二维数组 在C++中不能直接动态申请二维数组,经过一番搜索,发现一种动态申请二维数组较好的方法. 代码如下(MATRIX_TYPE为某一种类型,Lines和Columns): MATRIX_TYPE** elem; //C++二维矩阵动态申请空间 elem = new MATRIX_TYPE*[Lines]; elem[0] = new MATRIX_TYPE[Lines * Columns]; for(int i = 1; i < Lines; i++) elem[i] =

动态创建二维数组

vector创建二维数组 初始化二维数组 vector<vector <int> > ivec(n ,vector<int>(m)); //n*m的二维vector vector<vector <int> > ivec(n , vector<int>(m, 0)); //n*m的二维vector,所有元素为0 动态创建m*n的二维 方法一: vector<vector <int> > ivec; ivec.re

【C语言】动态创建二维数组

//动态创建二维数组 #include <stdio.h> #include <stdlib.h> #include <malloc.h> int main() { int i,j; int n,m; //以n行5列为例 int (*p)[5]; printf("请输入行数:"); scanf("%d",&n); p=(int(*)[5])malloc(5*n*sizeof(int)); for(i=0;i<n;i+